JS中的传值和传址
疑问的来源
在JS的函数传入参数的时候,在函数内部改变参数的值,结果不同
1 | function test() { |
以上代码测试结果为
1 | int: 5 obj: 10 |
为什么呢?
JS中的var
JS中的对象分为两种
- 基本对象: 储存的为具体的值
- 引用对象: 储存的为某个地址
其中引用对象中储存的地址既可以是Object对象的地址,也可以是某个函数的地址,所以才能有以下代码
1 | var a = function(){//do}; |
传参的本质
根据JavaScript高级程序设计中68-72页介绍,JS函数的传参实质上是一种拷贝,有点类似于我的文章深拷贝与浅拷贝中的讨论,如果函数**function doTest(param)**存在参数,那么 param 本身是一个var,会对传入的var的内容进行复制
1 | function doIntTest(param) { |