[
6月7日
-
3分钟阅读
[
拯救
Javascript中的原始值与非原始值?
JS中的原始值和非原始值(对象引用)之间有什么区别?
如果你正在面试一个前端开发的职位,很有可能会被问到这个问题。
那么这些到底是什么呢?
为了理解这个问题,我们需要知道Javascript中存在多少种不同的数据类型。
**The latest ECMAScript standard defines eight data types:**
- 字符串
- 布尔型
- 数字型
- BigInt
- 空值
- 未定义
- 符号
- 对象
注意:数组不属于这个列表,因为它们也是对象。这在开发者中是一个常见的混淆,他们认为数组是Javascript中的一种特殊数据类型。
现在,这些数据类型大致分为两种类型。
- 原始数据:(字符串、布尔值、数字、大Int、空、未定义、符号)。
- 非原生型:--对象(数组、函数),也叫对象引用。
基元和非基元的根本区别在于,基元是immutable ,非基元是mutable 。
- 可变的值是那些在创建后可以被修改的值。
- 不可变的值是那些在创建后不能被修改的值。
基元被称为不可变的数据类型,因为一旦基元被创建,就没有办法改变它。
例子1:-
基元是不可变的(不能直接改变)
需要注意的是,在上面的例子中,存储了基元值的变量可以被重新分配到一个新的值,但现有的值不能被改变,如下图所示
基元值是不可改变的
A primitive value can be replaced, but it can’t be directly altered.
其次,Primitive ,通过值进行比较。如果两个值相同,则严格来说是相等的。
const example1 = 'This is a test string';const example2 = 'This is a test string';
非原始值被称为mutable 数据类型,因为我们可以在创建后改变值。
非原始值是可变的
正如你在上面的例子中看到的,我们可以在创建后改变数组。
其次,对象不是通过值来比较的,它们是通过reference 。
例如,如果两个对象有相同的键值对,它们并不严格等同。数组也是如此。即使它们有相同的元素,而且顺序相同,它们也不是严格相等的。

对象通过引用而非值进行比较
两个对象只有在引用相同的底层对象时才是严格相等的。
例子:-
let obj1 = {name: 'test', city: 'Jaipur'}let obj3 = obj1;
区别和总结
- 原始值是不可变的
- 原始值通过值进行比较
- 非原始值是可变的
- 非原始值通过引用而非值进行比较
请在评论区分享您的观点,感谢您的反馈。
希望你会喜欢并分享这篇文章,以便更好地达到
,请查看我的其他文章--- -。 https://medium.com/@aayushtibra1997***
谢谢你的阅读 :)***