• 深入js系列-类型(null)


    首先null是表示什么状态呢

    这个是需要和上篇的undefined做一个区分

    undefined 从未赋值 非关键词(也就是可以定义为变量名或者赋值给它)
    null 曾经赋值、目前没值 关键词

    typeof “失灵了”
    var a = null
    typeof  a // "object"而不是"null"
    

    这个bug是第一版Javascript留下来的。在这个版本,数值是以32字节存储的,由标志位(1~3个字节)和数值组成。标志位存储的是低位的数据。这里有五种标志位:
    000:对象,数据是对象的应用。
    1:整型,数据是31位带符号整数。
    010:双精度类型,数据是双精度数字。
    100:字符串,数据是字符串。
    110:布尔类型,数据是布尔值。
    最低位有一位,那么标志位只有一个1字节长度;或者是零位,标志位有3个字节长度,多出两个了字节,一共多出四种类型。

    有两个特殊的数值:
    undefined(JSVAL_VOID)是-2^30(一个超出整数范围的数字)
    null(JSVAL_NULL)是机器代码的空指针,一个对象类型的引用,值是零。

    我们可以这样辨别

    (!a && typeof === "object") //true
    // 或者
    a === null
    
    null小结

    null 是作为一个值的预定位来使用的,比如在vue里面data,你不能定义k-v形式为k-undefined,这样无法响应,

    可以这样辨认

    (!a && typeof a === "null")
    a === null
    
  • 相关阅读:
    C++类继承内存布局(二)
    C++类继承内存布局(一)
    排序算法
    python 文件路径问题
    python map对象
    python reduce() 函数
    python eval 用法
    PyCharm引入自定义类报错
    Python中的lambda的简单介绍
    python time模块和datetime模块
  • 原文地址:https://www.cnblogs.com/sefaultment/p/10570363.html
Copyright © 2020-2023  润新知