• 前端培训丁鹿学堂:js面试之新增数据类型有几个


    **js的数据类型有哪些?**

    这是一个很基础的面试题。一般一到两年工作经验的人的岗位会问到这个东西。

    很多人不以为然,不就是 **number,string,bool,undefined,null,object**吗?

    草率啦,几年前的回答没错,现在呢?其实es6新增了一种数据类型 **Symbol**。

    **Symbol。指的是独一无二的值。每个通过 Symbol() 生成的值都是唯一的**

    **所以你答出来symbol才算正确的。**

    但是到这里并不算完,这个题除了考察基础外,还有一层意思,就是看你会不会去主动了解一些js的前沿的东西。

    **接下来的就是加分项,ES2020,新增了一个数据类型,bigInt,**

    **关于bigInt扯起来就话长了,面试的时候你只需要说: ES2020引入了一种新的数据类型 BigInt。BigInt 只用来表示整数,没有位数的限制,任何位数的整数都可以精确表示。**

    到这里还不算完,JavaScript即将推出两个新的数据类型:**Record 和 Tuple**。

    今天我们就来认识一下这两个新增的数据类型吧!

    **Record 可以理解为只读的Object**

    怎么创建呢?语法如下

    ```
    // Records
    const oneRecord = #{
     name: 'zhangsan',
      age: 18
    }
    ```

    **Tuple 可以理解为只读的数组。**

    ```
    // Tuple
    const oneTuple = #['1', '2', '3']
    ```

    他们的三个特性要了解:

    **1 只读性,就是你改变会报错**

    ```
    oneRecord[age] = 20 // error
    ```

    **2 非唯一性**

    **如果定义两个对象,即使他们的内容都一样,也不会相等,因为他们的内存地址不一样**

    ```
    let obj1 = {name:'zhangsan1',age:18}
    let obj2 = {name:'zhangsan1',age:18}
    obj1 === obj2  // false
    ```

    **但是Records 就不同了,只要内容相同,就是全等的**

    ```
    let obj3 = #{name:'zhangsan1',age:18}
    let obj4 = #{name:'zhangsan1',age:18}
    obj3 === obj4 // true
    ```

    **3 普通对象和数组的转换**

    ```
    const oneRecord = Record({name:'zhangsan1',age:18});   // #{name:'zhangsan1',age:18}
    const oneTuple = Tuple(['1', '2', '3']);   // #['1', '2', '3']
    ```

    **这两个数据类型可以用于保护一些数据,比如函数的返回值、对象内部的静态属性**

    所以,在面试的时候如果能透漏出你了解的这些,肯定会给面试官留下不一样的印象哦~

  • 相关阅读:
    基于 HarmonyOS 的 HTTPS 请求过程开发示例(ArkTS)
    Java基础知识点
    Centos 7下安装php+mysql+nginx+wordpress教程新版
    Hbase Coprocessor 协处理器 与 JavaAPI
    i5 13600KF参数 酷睿i53600KF什么水平i5 13600KF核显相当于什么显卡
    【LeetCode】zj面试-把字符串转换成整数
    零序电流继电器器JL-8C-12-2-2
    Spring:Bean生命周期
    Vue 中使用事件总线来进行组件间通信($emit()、$on() 和 $off())
    Java 进程和线程 2
  • 原文地址:https://blog.csdn.net/qq_38525381/article/details/125485026