JavaScript参数按照值传递的具体介绍
本篇文章主要介绍了深入理解JavaScript 参数按值传递,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
定义
ECMAScript中所有函数的参数都是按值传递的。
什么是按值传递呢?
也就是说,把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样。
按值传递
举个简单的例子:
var value = 1; function foo(v) { v = 2; console.log(v); //2 } foo(value); console.log(value) // 1
很好理解,当传递 value 到函数 foo 中,相当于拷贝了一份 value,假设拷贝的这份叫 _value,函数中修改的都是 _value 的值,而不会影响原来的 value 值。
引用传递
拷贝虽然很好理解,但是当值是一个复杂的数据结构的时候,拷贝就会产生性能上的问题。
所以还有另一种传递方式叫做按引用传递。
所谓按引用传递,就是传递对象的引用,函数内部对参数的任何改变都会影响该对象的值,因为两者引用的是同一个对象。
举个例子:
var obj = { value: 1 }; function foo(o) { o.value = 2; console.log(o.value); //2 } foo(obj); console.log(obj.value) // 2
哎,不对啊,连我们的红宝书都说了 ECMAScript 中所有函数的参数都是按值传递的,这怎么能按引用传递成功呢?
而这究竟是不是引用传递呢?
第三种传递方式
不急,让我们再看个例子:
var obj = { value: 1 }; function foo(o) { o = 2; console.log(o); //2 } foo(obj); console.log(obj.value) // 1
如果 JavaScript 采用的是引用传递,外层的值也会被修改呐,这怎么又没被改呢?所以真的不是引用传递吗?
这就要讲到其实还有第三种传递方式,叫按共享传递。
而共享传递是指,在传递对象的时候,传递对象的引用的副本。
注意: 按引用传递是传递对象的引用,而按共享传递是传递对象的引用的副本!
所以修改 o.value,可以通过引用找到原值,但是直接修改 o,并不会修改原值。所以第二个和第三个例子其实都是按共享传递。
最后,你可以这样理解:
参数如果是基本类型是按值传递,如果是引用类型按共享传递。
但是因为拷贝副本也是一种值的拷贝,所以在高程中也直接认为是按值传递了。
所以,高程,谁叫你是红宝书嘞!
深入系列
JavaScript深入系列预计写十五篇左右,旨在帮大家捋顺JavaScript底层知识,重点讲解如原型、作用域、执行上下文、变量对象、this、闭包、按值传递、call、apply、bind、new、继承等难点概念。
以上是JavaScript参数按照值传递的具体介绍的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

i9-12900H是14核的处理器,使用的架构和工艺都是全新的,线程也很高,整体的工作都是很优秀的,一些参数都有提升特别的全面,是可以给用户们带来极佳体验的。i9-12900H参数评测大全评测:1、i9-12900H是14核的处理器,采用了q1架构以及24576kb的制程工艺,提升到了20个线程。2、最大的CPU频率是1.80!5.00ghz,整体主要取决于工作的负载。3、相比较价位来说还是特别合适的,性价比很不错,对于一些需要正常使用的伙伴来说非常的合适。i9-12900H参数评测大全性能跑分

JavaScript教程:如何获取HTTP状态码,需要具体代码示例前言:在Web开发中,经常会涉及到与服务器进行数据交互的场景。在与服务器进行通信时,我们经常需要获取返回的HTTP状态码来判断操作是否成功,根据不同的状态码来进行相应的处理。本篇文章将教你如何使用JavaScript获取HTTP状态码,并提供一些实用的代码示例。使用XMLHttpRequest

C++参数类型安全检查通过编译时检查、运行时检查和静态断言确保函数只接受预期类型的值,防止意外行为和程序崩溃:编译时类型检查:编译器检查类型相容性。运行时类型检查:使用dynamic_cast检查类型相容性,不匹配则抛出异常。静态断言:在编译时对类型条件进行断言。

PHP中函数调用既可使用值传递也可使用引用传递。默认情况下为值传递,函数接收参数的副本,对其修改不影响原始值。而引用传递通过在参数前加&符号来声明,函数直接修改传递的变量。引用传递在需要函数修改外部变量时很有用,例如修改数组元素。

JavaScript中的HTTP状态码获取方法简介:在进行前端开发中,我们常常需要处理与后端接口的交互,而HTTP状态码就是其中非常重要的一部分。了解和获取HTTP状态码有助于我们更好地处理接口返回的数据。本文将介绍使用JavaScript获取HTTP状态码的方法,并提供具体代码示例。一、什么是HTTP状态码HTTP状态码是指当浏览器向服务器发起请求时,服务

C++函数中的引用参数(本质为变量别名,修改引用修改原始变量)和指针参数(存储原始变量的内存地址,通过解引用指针修改变量)在传递和修改变量时有着不同的用法。引用参数常用于修改原始变量(尤其是大型结构体),传递给构造函数或赋值运算符时避免复制开销。指针参数则用于灵活指向内存位置,实现动态数据结构或传递空指针表示可选参数。

美颜相机怎么调参数拍照好看?在美颜相机这款app中用户可以根据自己的需求去选择滤镜,如果是懂相机参数的用户还可以对相机参数进行调整,调整过后的参数能让用户更符合自己的想象,不同的参数可以提供不同的效果!不过会调参数的用户并不多,很多小伙伴对于什么对比度、饱和度还有锐化这些都没什么概念,不调自然也是没什么问题的,不过也可以套用模板,不需要懂也能调出好看的参数!一起看看吧!美颜相机怎么设置参数最佳 1、你打开相机后,有美颜,有身材,有妆容。点击美颜,调整脱皮、肤色、瘦脸、大眼睛、细鼻子、黑眼圈

我们在使用excel的时候一定有用过vlookup函数吧。那么对于这种函总共有几个,每个函数具体是怎么使用的,据小编所知vlookup函数一共有四个,分别是Lookup_value、Table_array、col_index_num、Range_lookup。那么他们的具体用法就让小编来告诉大家吧~vlookup函数有几个参数每个参数的含义vlookup函数的参数有Lookup_value、Table_array、col_index_num、Range_lookup,一共有4个。1、Lookup
