数据范例、定义
起首,从实质来看,他们是两种差别的JavaScript数据范例。直接上《JavaScript高等程序设计》里的诠释好了。
Undefined范例:Undefined范例只要一个值,即特别的undefined。在运用var 声明变量但未对其加以初始化时,这个变量的值就是undefined。
Null范例:Null范例也只要一个特别的值——null。从逻辑角度来看,null值示意一个空对象指针。
运算符或许函数操纵效果
alert
a:声明但未定义(undefined)
b:声明且定义为null
c:未声明
typeof
a:声明但未定义(undefined)
b:声明且定义为null(示意定义的变量未来用于保留对象)
c:未声明(关于还没有声明过的变量,只能实行一项操纵,就是用typeof检测其数据范例)
instanceof
a:定义为undefined
b:定义为null
转换成布尔值
用 !逻辑非运算符,undefined和null会自动转换成布尔值false,然则直接用==则会失效。
两者之间比较 == && ===
== 运算符比较:在对照差别范例时先做数据范例转换,转换后比较两个变量的值
===运算符比较:比较两个数据的数据范例以及值
题外(内?)话——typeof和instanceof之间的区分
typeof:是运算符,不是函数,用于检测变量的数据范例。返回的是一个字符串。
运用方法eg. Typeof(“string”) 个中括号可加可不加
typeof返回的值有:undefined, string, boolean, number, object, function
剖析一下上图的两个效果:
typeof 1: 1就是一个数字范例的常量,故效果为”number”;
new Number(1) 建立一个Number范例的对象,值为1,故效果为”object”
instanceof用于推断一个变量是不是是某个对象(类)的实例。返回的是布尔范例。
在控制台做了以下两行代码的测试,最早试的实际上是第二行代码,输出false的时刻我另有有些惊奇的,a不是赋值1了嘛,怎样是false呢?因而我又细致读了一下instanceof的定义,对象,类,1根本就是一个常量嘛,跟对象的实例根本不挨边。(连系Java的OOP相干学问,明白许多)
instanceof返回的值有:true false