JavaScript中undefined和null的区分

数据范例、定义

起首,从实质来看,他们是两种差别的JavaScript数据范例。直接上《JavaScript高等程序设计》里的诠释好了。
Undefined范例:Undefined范例只要一个值,即特别的undefined。在运用var 声明变量但未对其加以初始化时,这个变量的值就是undefined。
Null范例:Null范例也只要一个特别的值——null。从逻辑角度来看,null值示意一个空对象指针。

运算符或许函数操纵效果

alert
a:声明但未定义(undefined)
b:声明且定义为null
c:未声明

《JavaScript中undefined和null的区分》

typeof
a:声明但未定义(undefined)
b:声明且定义为null(示意定义的变量未来用于保留对象)
c:未声明(关于还没有声明过的变量,只能实行一项操纵,就是用typeof检测其数据范例)

《JavaScript中undefined和null的区分》

instanceof
a:定义为undefined
b:定义为null

《JavaScript中undefined和null的区分》

转换成布尔值

用 !逻辑非运算符,undefined和null会自动转换成布尔值false,然则直接用==则会失效。

《JavaScript中undefined和null的区分》

两者之间比较 == && ===

== 运算符比较:在对照差别范例时先做数据范例转换,转换后比较两个变量的值
===运算符比较:比较两个数据的数据范例以及值

《JavaScript中undefined和null的区分》

题外(内?)话——typeof和instanceof之间的区分

typeof:是运算符,不是函数,用于检测变量的数据范例。返回的是一个字符串。
运用方法eg. Typeof(“string”) 个中括号可加可不加
typeof返回的值有:undefined, string, boolean, number, object, function

《JavaScript中undefined和null的区分》

剖析一下上图的两个效果:
typeof 1: 1就是一个数字范例的常量,故效果为”number”;
new Number(1) 建立一个Number范例的对象,值为1,故效果为”object”

instanceof用于推断一个变量是不是是某个对象(类)的实例。返回的是布尔范例。
在控制台做了以下两行代码的测试,最早试的实际上是第二行代码,输出false的时刻我另有有些惊奇的,a不是赋值1了嘛,怎样是false呢?因而我又细致读了一下instanceof的定义,对象,类,1根本就是一个常量嘛,跟对象的实例根本不挨边。(连系Java的OOP相干学问,明白许多)
instanceof返回的值有:true false

《JavaScript中undefined和null的区分》

    原文作者:青草怪味豆
    原文地址: https://segmentfault.com/a/1190000017386716
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞