详解JS中值传递和引用传递的区别


本文摘自PHP中文网,作者青灯夜游,侵删。

本篇文章带大家详细了解一下JavaScript中值和引用传递的区别。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

在JavaScript中,可以通过值和引用传递。两者之间的主要区别是,按值传递发生在赋值基本类型的时候,而赋值对象时按引用传递。下面详细看看。

1.理解基本类型和对象

JavaScript提供了2种数据类型:基本类型和对象

基本类型有 number, boolean, string, symbol,null,undefined

1

2

3

4

5

6

7

8

9

10

// 基本类型

const number = 10;

 

const bool = false;

 

const str = 'Hello!';

 

const missingObject = null;

 

const nothing = undefined;

第二类是对象,普通对象、数组、函数等等都是对象。

1

2

3

4

5

6

7

8

9

10

// Objects

const plainObject = {

  prop: 'Value'

};

 

const array = [1, 5, 6];

 

const functionObject = (n1, n2) => {

  return n1 + n2;

};

换句话说,任何不是基本类型的值都是对象。

2.按值传递

按值传递的简单规则是 JS 中的所有基本类型都按值传递,就这么简单。

按值传递意味着每次将值赋给变量时,都会创建该值的副本,每一次哦。

1.png

举个例子来看看,假设我们有两个变量 ab

1

2

3

4

5

6

7

let a = 1;

let b = a;

 

b = b + 2;

 

console.log(a); // 1

console.log(b); // 3

第一条语句,声明一个变量 a,并赋值为 1

第二条语句,声明一个变量 b,并把 a 的值赋值给它。

最后,b = b + 2增加2并变为3b变量发生变化,并且该变化不会影响a的值。

3.引用传递

通过引用传递的方式与值传递相比会有所不同。

当创建一个对象时,就获取一个对该对象的引用。如果两个变量持有相同的引用,那么改变对象会反映在两个变量中。

阅读剩余部分

相关阅读 >>

javascript创建对象(3种方式)

javascript创建命名空间的多种玩法

javascript求x平方怎么做

javascript深入探索 websocket和http/2与sse +如何选择正确的路径!

javascript怎么添加元素

javascript对象rest和spread的使用技巧(附代码)

javascript如何禁止刷新页面

javascript函数式编程中代码组合(compose)的理解

javascript特权方法有什么用

javascript怎么求数字串的最值

更多相关阅读请进入《javascript》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...

    正在狠努力加载,请稍候...