首先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

最新文章

  1. *HDU 1086 计算几何
  2. spring MVC @Resource不支持Lazy加载
  3. BizTalk开发系列(十五) Schema设计之Qualified 与Unqualified
  4. System V共享内存区
  5. java 的文件读取操作
  6. orale内置函数COALESCE和GREATEST和LEAST
  7. 树-哈夫曼树(Huffman Tree)
  8. linux 常用命令 集锦
  9. Upcase 将edit1中的每个字符串改为首字母大写
  10. JQ 事件
  11. Delphi中运行时改变panel的位置及大小(WM_SysCommand消息配合参数使用,很奇妙) good
  12. TCP三次握手和Time-Wait状态
  13. 【转】对于JNI方法名,数据类型和方法签名的一些认识
  14. Python中time和datetime模块的简单用法
  15. Thread.join(), CountDownLatch、CyclicBarrier和 Semaphore区别,联系及应用
  16. javascript中的map和reduce
  17. vim 查找替换批量替换
  18. MySQL中的information_schema数据库表说明
  19. ES6
  20. 201709013工作日记--Android消息机制HandlerThread

热门文章

  1. select2的简单使用
  2. 基于贝叶斯网(Bayes Netword)图模型的应用实践初探
  3. jQuery浮窗图片到页面中间的代码兼容移动端
  4. 关于IDEA中web项目中web.xml配置文件标红的解决办法
  5. “sgen.exe”未能运行。文件名或扩展名太长
  6. 需要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping。
  7. C# winform中组合键奇怪不响应问题
  8. Linux系统SSH免密登录
  9. Java自学-I/O 关闭流的方式
  10. vim操作:打开多个文件、同时显示多个文件、在文件之间切换