JavaScript中数组是按引用传递的? 您所在的位置:网站首页 数组作为参数传递的是引用地址 JavaScript中数组是按引用传递的?

JavaScript中数组是按引用传递的?

2024-07-11 20:56| 来源: 网络整理| 查看: 265

很多书上说,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 实验室设备网 版权所有