JavaScript 的型别有两种 - 纯值与物件,而在 JavaScript 中,赋予一个值到变数上时会有两个特性 - 传值与传参考,纯值是透过传值的方式来做传递,而物件则是透过传参考,以下是关於传值与传参考的说明:
传值是一种复制的概念,而 纯值是透过传值的方式来做传递,当一个变数被赋予至另一个变数上,在赋予值之後,两个变数就没有关系了
以下范例是使用字串(纯值)来做传递
变数 person
後,记忆体会存放 变数 person
的名称与值变数 person2
并将 变数 perosn
赋予至 变数 person2
上,变数 person2
会直接接收 变数 perosn
的值 -> 此种方式就是传值变数 person2
的值,变数 person
的值也不会改变var person = 'Carol';
var person2 = person;
person2 = 'Mary';
console.log(person); // Carol
console.log(person2); // Mary
运作过程:
纯值有:
- Number 数字型别
- String 字串型别
- Boolean 布林值
- Null 空
- Undefined 未定义
- BigInt 整数数值
- Symbol
物件型别(ex: 物件、阵列、函式)都属於传参考
此范例中当更改了 变数 person2
的值,变数 person
同样也会被更改到,因他们指向相同物件。使用严格相等也可看到 变数 person
、变数 person2
是指向同个记忆体参考路径
变数 person
并赋予一个物件型别的值,这个物件会存放在记忆体中,而 变数 person
则会指向此物件的 记忆体参考路径
变数 person
赋予至 变数 person2
,变数 person2
也会指向同一个 记忆体参考路径
变数 person2
的物件时,因与 变数 person
是指向相同物件,所以 变数 person
也同样会被更改到var person = {
name: 'Carol',
money: 200
};
var person2 = person;
person2.nickName = 'Jay';
console.log(person); // {name: 'Jay', money: 200}
console.log(person2); // {name: 'Jay', money: 200}
console.log(person === person2); // true
范例1 运作过程
当变数重新赋予新的物件时,表示指向新物件的 记忆体参考路径
此范例中当将 变数 person2
重新赋予一个新的物件,变数 person2
会指向新物件,所以就算修改 变数 person2
也不会影响 变数 person
。使用严格相等也可看到 变数 person
、变数 person2
是指向不同个记忆体参考路径
变数 person
一个物件型别的值,此物件会存放在记忆体中,而 变数 person
会指向此物件的 记忆体参考路径
变数 person
赋予至 变数 person2
,变数 person2
会与 变数 person
指向同一个 记忆体参考路径
变数 person2
一个物件型别的值,变数 person2
会指向新物件的记忆体参考路径
变数 person2
的物件时,因与 变数 person
已指向不同的 记忆体参考路径
,故 变数 person
不会被更改到var person = {
name: 'Carol',
money: 200
};
var person2 = person;
person2 = { name: 'Jay' };
person2.name = 'Mary';
console.log(person); // {name: 'Carol', money: 200}
console.log(person2); // {name: 'Mary'}
console.log(person === person2); // false
范例2 运作过程
心得: 画图真的很花时间 ><
>>: Day 22 ATT&CK for ICS - Discovery(2)
今天用来使用 Session 做警告(提示),它可以用来让使用者知道他的动作使否有成功(例如修改成功...
大家好~ 继续昨天的主题, 今天要来把 Laravel 部署上 Server, 顺便设定一下 MyS...
Nuxt.js是什麽?可以吃吗? 每一个工具的诞生,都是为了"解决问题",而 Nuxt.js 是用来...
今天有一家饮料店想比较不同县市的分店销售量,想确认不同县市每天的销售量是否有明显的差异,於是随机抽选...
「鲑鱼均,因为一场鲑鱼之乱被主管称为鲑鱼世代,广义来说以年龄和脸蛋分类的话这应该算是一种 KNN 的...