美文网首页
JavaScript篇 类型

JavaScript篇 类型

作者: 蜗牛_151a | 来源:发表于2019-04-20 10:56 被阅读0次

    从运行时、文法和执行过程三个角度去剖析 JS 的知识体系
    运行时类型表示 代码实际执行时所用的的数据类型,7大类型之一,从变量、参数、返回值、表达式结果,任何代码在运行时产生的数据都叫运行时类型
    undefined,null,string,number,symbol,boolean,object

    1.为什么有的编程规范要求用 void 0 代替 undefined?

    undefined,null

    undefined表示未定义 因为undefined实际是个全局变量,但并非一个关键词
    所以,避免无意中被篡改,建议使用 void 0 来获取 undefined 值。

    var undefined=123
    console.log(undefined) //123 undefined被篡改了,void为关键词
    

    null表示定义了但是为空值,null为关键词,所有不存在被篡改的情况

    boolean

    2.字符串有最大长度吗?

    string

    • String 用于表示文本数据。String 有最大长度是 2^53 - 1,这在一般开发中都是够用的
    • 字符串实际长度的计算,Unicode 的码点表示一个字符
    • JavaScript 字符串把每个 UTF16 单元当作一个字符来处理,所以处理非 BMP(超出 U+0000 - U+FFFF 范围)的字符时,你应该格外小心。
    • JavaScript 这个设计继承自 Java,最新标准中是这样解释的,这样设计是为了“性能和尽可能实现起来简单”。因为现实中很少用到 BMP 之外的字符。

    number

    基本符合 IEEE 754-2008 规定的双精度浮点数规则,但是 JavaScript 为了表达几个额外的语言场景(比如不让除以 0 出错,而引入了无穷大的概念)

    • NaN,占用了 9007199254740990,这原本是符合 IEEE 规则的数字;
    • Infinity,无穷大;
    • -Infinity,负无穷大。
      检测+0和-0的区别 1/-0(-Infinity) 1/0(Infinity)
      计算机计算精度有差别
      0.1+0.2=0.30000000000000004
      0.1+0.2==0.3 //false
      Math.abs() 方法可返回数的绝对值, 属性表示 1 与number可表示的大于 1 的最小的浮点数之间的差值。
      1-大于1的最小浮点数=Number.EPSILON
      Math.abs(0.1 + 0.2 - 0.3) <= Number.EPSILON

    symbol

        var o= new Object()
      o[Symbol.iterator]=function(){
             var v=0;
             return{
                    next:function(){
                        return {value:v++,done:v>10}
                   }
             }
      }
    

    Object

    为什么给对象添加的方法能用在基本类型上?

    对象的定义:属性的集合,属性分为数据属性和访问器属性,key-value,key可以是字符串和Symbol
    class仅仅是运行时对象的一个私有属性
    类型转换,隐式类型转换和显示类型转换
    装箱机制会频繁产生临时对象,在一些对性能要求较高的场景下,我们应该尽量避免对基本类型做装箱转换。

    相关文章

      网友评论

          本文标题:JavaScript篇 类型

          本文链接:https://www.haomeiwen.com/subject/cwbxuqtx.html