那么这些到底是什么呢?
为了理解这个问题,我们需要知道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'
非原始值被称为mutable
数据类型,因为我们可以在创建后改变值。
非原始值是可变的
正如你在上面的例子中看到的,我们可以在创建后改变数组。
其次,对象不是通过值来比较的,它们是通过reference
。
例如,如果两个对象有相同的键值对,它们并不严格等同。数组也是如此。即使它们有相同的元素,而且顺序相同,它们也不是严格相等的。
对象通过引用而非值进行比较
两个对象只有在引用相同的底层对象时才是严格相等的。
let obj1 = {name: 'test', city: 'Jaipur'}let obj3 = obj1
区别和总结
原始值是不可变的
原始值通过值进行比较
非原始值是可变的
非原始值通过引用而非值进行比较
请在评论区分享您的观点,感谢您的反馈。
希望你会喜欢并分享这篇文章,以便更好地达到
,请查看我的其他文章--- -。 https://medium.com/@aayushtibra1997***
谢谢你的阅读 :)***
道长王jj
JavaScript
- 1236
-
zxg_神说要有光
JavaScript
- 9095
-
linwu
JavaScript
Vue.js
- 1520
-
CondorHero
JavaScript
TypeScript
- 1073
-
ssh_晨曦时梦见兮
Vue.js
JavaScript
- 806
-
猪头切图仔
JavaScript
React.js
- 774
-
魔术师卡颂
JavaScript
React.js
- 5533
-
爆燃的小牛
JavaScript
Node.js
- 4167
-
DebugUsery
前端工程师 @ 某不知名大厂