前端基础 | Javascript函数传值的方式
你知道js中函数传值方式是怎样的吗?是不是听说过函数都是按值传递的?why?
函数传值
《JavaScript高级程序设计》书中说:
ECMAScript中所有函数的参数都是按值传递的。
按值传递
把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样。
基本数据类型
传递的是原始值本身
在函数中修改传入的值,不会影响原来的数据
1 | var value = 1; |
复杂数据类型
传递的是对象的引用的副本,看下面两个例子,看看有什么不一样?
1 | // 例子1 |
解释:
对于复杂的数据类型,函数内部的临时变量和传入的参数指向同一个内存地址
,所以有例子一
,我们能通过 o.value
找到内存中的 o
,也就找到了外部的 obj
,所以我们修改 o.value
值的时候,也会影响 obj
中的 value
值。
对于例子二
,因为是直接对传入的参数进行了赋值操作
,这会将内部参数 o
进行重新绑定
,指向了一个新的地址,所以此时修改函数内部的值不会对外部有影响
。
参考文章
https://segmentfault.com/q/1010000003023316
感谢你的阅读
先就记录这几个知识点吧,多了一次性也记不住,大概率你也不会来看第二遍