undefined
在任何不确定的情况下,使用未初始化的变量、访问不存在(或已删除)的属性、使用不存在的数组元素时——你都将遇到undefined。
undefined可以简单理解为:对于任何还没有值(即还未初始化)的东西赋给它。
- 可以判断是否给变量(属性或数组元素)赋值了
//变量
var x
if( x == undefined){
//x未定义,处理何种情况
}
//对象的属性
var customer = {
name: "jenny"
};
if(customer.phoneNumber == undefined){
//获取客户的电话号码
}
null
简单理解:要是有对象,我就会是一个对象,可当前没有。就是null
拿document。getElementById来说,要求它返回一个对象,如果它无法返回一个对象,就返回null。
在应该提供一个对象,但无法创建或找到时,将提供null;在变量未初始化、对象没有指定属性或数组没有指定元素时,将返回undefined。
- 可以用null来检查对象是否存在
var header = document.getElementById("header")
if(header == null){
//不存在header元素
}
NaN
NaN来表示它无法表示的数值结果,比如0/0,在计算机中无法表示其结果,因此JavaScript使用NaN来表示它。
NaN与自己不相等
- isNaN函数
if(isNaN(myNum)){
myNum = 0; //使用函数时,它在传入的值不是数字时返回true
}
- typeof
var test = 0/0
console.log(typeof test) //输出是number
==运算符
- 如果两个值类型相同,就直接进行比较
如两个数字或两个字符串进行比较 - 如果两个值类型不同,则尝试将它们转换为相同的类型,再进行比较
情形一:比较数字和字符串
情形二:比较布尔值和其他类型99 == "vanilla" //字符串无法转换为数字 99 == NaN //在试图将“vanilla”转换为数字时,结果为NaN, false //而它与什么东西都不相等,因此结果为false
情形三:比较null和undefined1 == true //将数字和布尔值进行比较,将 true 转换为数字1 1 == 1 //将1 与 1 进行比较 结果为true true
undefined == null //相等 true
===严格相等
(可以使用==的任何地方,都可以使用 严格相等)
当且仅当两个值的类型和值都相同时,它们才是严格相等。