[Day14] 传值或传址(上)

JavsScript 的资料型别分成两大类,第一类是基本型别,第二类是物件型别,型别的介绍可以参考前面的文章,今天要来讲的是两种型别在记忆体上储存的差异,分为传值与传址。

基本型别(primitive):资料以纯值的形式存在。
物件型别(object):可能由零或多种不同型别(含纯值与物件)所组成的物件。--008

今天先来讲基本型别的传值概念

举例如下情况:
比较基本型别得到结果是 true,而比较物件型别结果却是 false。因 a、b 这两个变数属基本型别所以判断的是他的值;obj1 跟 obj2 是物件型别,因各别宣告记忆体位置不同,所以才会有 false 的结果。

// 基本型别
var a = 10;
var b = 10;
console.log(a === b); // true

// 物件型别
var obj1 = { value: 10 };
var obj2 = { value: 10 };
console.log(obj1 === obj2); // false

变数的更新与传递(基本型别)

在基本型别中复制变数,复制的是那个变数的值,所以 a 重新赋值的时候不影响 b:

var a = 10;
var b = a;
a = 20;

console.log(a); // 20
console.log(b); // 10,为什麽 b = a,结果 b 不是 20?

b 复制 a 的时候是指向同一个 stack,

当 a 重新赋值,实际上旧的值会留着不会被修改,然後记忆体会新增一个位址指向 20,

图画出来是不是好理解多了
明天再来谈传址

参考资料
JavaScript’s Memory Model
008天重新认识JavaScript


<<:  [Python 爬虫这样学,一定是大拇指拉!] DAY14 - TCP / IP

>>:  纯手工打造UART间的资料清洗工具II - 在一个档案中同时存取两个UART的方法

[Day 20] Mattermost - 自签凭证绑定 Docker版

自签凭证绑定 Docker版 当有需求要Mattermost绑定自签凭证时怎麽办?我们的Matter...

Day 7 - 原型 (6): 预览主页

前言 今天利用之前所建的主页, 建立一个可让使用者互动的原型。 预览 利用Figma的预览功能, 即...

Day16|什麽是 HEAD ?

在先前的章节里,我们可以常看见 HEAD 这个名词,它指的是什麽呢? // git 恢复文件到初始状...

D17- 用 Swift 和公开资讯,打造投资理财的 Apps { 移动平均线(MA线)分析 }

做完 K 线完成後,就是做均线,常见大盘走势图如下,在这些 K 棒的图上,通常会有数条(通常三条)线...

[Day17] JavaScript - Async & Await

为解决JavaScript非同步问题,最初使用的方式是callback function,但为了避...