相关文章推荐
聪明的海龟  ·  前端react ...·  1 周前    · 
想表白的楼房  ·  java ...·  1 年前    · 

那么这些到底是什么呢?

为了理解这个问题,我们需要知道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***
    谢谢你的阅读 :)***

    道长王jj JavaScript
    私信