JavaScript | By value V.S. By reference(传值 V.S. 传参考)

传值 (By value)

针对一个变数的纯值(Number, String, Boolean, undefined 与 NULL等)用等号传递给另一个变数或函式,此值会复制一份,且会创造一个新的记忆体位址,将那个值存入。
EX:

var a = 3;
var b;
b = a

此时变数 b 的值虽然也是3,但是这个3是从a的值复制来的,也就是对方的拷贝,这两个3分别放在两个不同的记忆体位置。
所以改变a的值是不影响b的值。
如果刚刚的范例改变a的值,b会变多少呢?
EX:

var a = 3;
var b;
b = a

a = 10; 
console.log(b); //3

b 仍然是3,因为拷贝之後就与a的值没有关系了。
这就是纯值的 by value

传参考(By reference)

针对所有物件(包含Array与function)用等号赋值给变数,会指向同一个原物件。

var a = {name:'Ivy'};
var b = a ;

a.name='Lisa';
console.log(b.name); //Lisa

因为这是一个物件,它不会建立一个新的记忆体位址给b,所以a与b都指向同一个物件,a改值b的值也会跟着改。
这就是物件的传参考 by reference

参考文章:
你不可不知的 JavaScript 二三事#Day26:程序界的哈姆雷特 —— Pass by value, or Pass by reference?
EDUCBA JavaScript Pass By Value


<<:  Day 14:怎麽在 Angular 使用 Bootstrap?

>>:  【第11天】训练模型-Keras Application重要函数

第2章:实验操作的环境之虚拟机器介绍

前言 本章节,将会介绍本系列文章的实验操作环境以及一些设定与建置的步骤。 实验操作环境介绍 实验操作...

Day 09 - 智慧城市Go Smart Award 经历(3) - 得奖

经过复赛Online Pitch之後, 我当时真的感觉很有机会得奖, 加上无论比赛结果如何, 客户...

Best Spring Assisted Knife For 2021

Spring-assisted knives also called assisted openin...

Day 15:在生命周期呼喊 API

在铁人赛即将过半之际,终於要来串接 API 显示真实的书单资料了!不过在此之前,我们应该先来了解一下...

最短路径问题 (6)

10.8 更多的 Leetcode 例题 Leetcode 1129. Shortest Path ...