js 函数参数按值传递的理解
2018-03-26 15:01
375 查看
例子选自《javas高级程序设计》
1.基本类型按值传递function addTen(num) {
num += 10;
return num;
}
var count = 20;
var result = addTen(count);
alert(count); //20,没有变化
alert(result); //30在执行addTen(count)时,将20这个值复制一份传递到了num中,addTen运行后,num为30,于是result等于30,而count依然是20
2. 引用类型值的传递function setName(obj) {
obj.name = "Nicholas";
obj = new Object();
obj.name = "Greg";
}
var person = new Object();
setName(person);
alert(person.name); //"Nicholas"setName运行后,将person的引用复制一份,使得参数中的obj指向了与person相同的引用,此时修改obj.name的值,person.name也会变,接下来再将obj指向一个新的对象,这个时候person和obj已经没有关系,person.name的值不会改变
总结:函数参数传递过程中之所以说传递值,即相当于复制了一份给参数;假如是引用,则函数中的参数和传入值完全是同一个值,那么后面对obj修改,person的值都会随之改变,而验证结果并没有因为obj指向了新对象就变,所以引用的传递还是按值传递,或者说,把引用的地址复制了一份给参数
1.基本类型按值传递function addTen(num) {
num += 10;
return num;
}
var count = 20;
var result = addTen(count);
alert(count); //20,没有变化
alert(result); //30在执行addTen(count)时,将20这个值复制一份传递到了num中,addTen运行后,num为30,于是result等于30,而count依然是20
2. 引用类型值的传递function setName(obj) {
obj.name = "Nicholas";
obj = new Object();
obj.name = "Greg";
}
var person = new Object();
setName(person);
alert(person.name); //"Nicholas"setName运行后,将person的引用复制一份,使得参数中的obj指向了与person相同的引用,此时修改obj.name的值,person.name也会变,接下来再将obj指向一个新的对象,这个时候person和obj已经没有关系,person.name的值不会改变
总结:函数参数传递过程中之所以说传递值,即相当于复制了一份给参数;假如是引用,则函数中的参数和传入值完全是同一个值,那么后面对obj修改,person的值都会随之改变,而验证结果并没有因为obj指向了新对象就变,所以引用的传递还是按值传递,或者说,把引用的地址复制了一份给参数
相关文章推荐
- 关于js中函数参数“按值传递”的理解
- 关于js 函数传递引用参数理解
- js中函数参数是按值传递的
- 2017033000C++函数参数和返回值三种传递方式:值传递、指针传递和引用传递(着重理解)
- 函数的指针参数传递问题--理解指针变量
- JAVA中函数调用参数传递的理解(值传递和引用传递的理解)
- js函数中参数的传递
- 一级指针不能做函数参数传递动态内存的理解
- JS中setInterval、setTimeout不能传递带参数的函数的解决办法
- 一个理解js动态创建节点并注册事件及传递参数的例子
- 【08】js函数中参数的传递
- 深入理解js中函数的参数
- JS把函数当作参数传递
- JS函数参数都是按值传递的!
- JS循环中使用bind函数的参数传递问题
- JS中setInterval、setTimeout不能传递带参数的函数的解决办法
- 关于js深入理解:json作为函数参数 类似于jQuery的post函数,具有url,data ,和回调函数
- js 绑定时间后,浏览器会根据函数的参数传递一个事件
- JS中函数参数的传递
- js函数参数传递,引号的问题,第二次犯错,记下来,以后不能犯了!