JavaScript中数组是按引用传递的? | 您所在的位置:网站首页 › 数组作为参数传递的是引用地址 › JavaScript中数组是按引用传递的? |
很多书上说,JavaScript中,函数都是按值传递的。比如: var a = 0; function test(x) { x = 100; } console.log(a);我们知道打印的a的值是0。 但书上没有详细介绍为什么数组看上去是按引用传递的。比如: function curve(arr, amount) { for (var i = 0; i < arr.length; ++i) { arr[i] += amount; } } var grades = [77, 73, 74, 81, 90]; curve(grades, 5); console.log(grades);打印的结果是:[82, 78, 79, 86, 95] 这篇文章很详细的讨论了JavaScript的按值传递和按引用传递:JavaScript 是传值调用还是传引用调用? 我的理解是: 第一:不要拘泥于字面的描述,JavaScript中,基本类型传入函数,函数参数得到基本类型值的拷贝;引用类型(数组、对象)传入函数,函数参数得到引用类型指针值的拷贝。 所以,可以说都是按“值”传递,但值得含义不同,一个是基本类型值,一个是指针值。 第二:要重点关注函数里面怎么使用传进来的“值”,就是具体改变了什么: function setName1(obj) { obj = new Object(); obj.name = 'Greg'; } function setName2(obj) { obj.name = 'Greg'; } var person = new Object(); person.name = "Nicholas" setName1(person);//改变了obj的指向,并添加了name属性 console.log(person.name); setName2(person);//改变了obj指向的对象的name属性的值 console.log(person.name);
|
CopyRight 2018-2019 实验室设备网 版权所有 |