申明
在JavaScript中,下面的值被当作假(false),除了下面列出的值,都被当作真(true):
false
null
undefined
空字符串
数字 0
NaN //属性是
代表非数字值
的特别值。NaN 与一切值都不相称,包含它自己
NaN === NaN //false
!!NaN === !!NaN //true
推断划定规矩
==, 双方值范例差别的时刻,要先举行
范例转换
,再比较。===,
不做范例转换
,范例差别的肯定不等。
恒等(===)
假如范例差别,就[不相称]
假如两个都是数值,并且是同一个值,那末[相称];(!破例)的是,假如个中最少一个是NaN,那末[不相称]。(推断一个值是不是是NaN,只能用isNaN()来推断)
假如两个都是字符串,每一个位置的字符都一样,那末[相称];不然[不相称]。
假如两个值都是true,或许都是false,那末[相称]。
假如两个值都援用同一个对象或函数,那末[相称];不然[不相称]。
假如两个值都是null,或许都是undefined,那末[相称]
。
等号(==)
假如两个值范例雷同,举行 === 比较。
假如两个值范例差别,他们能够相称。依据下面划定规矩举行范例转换再比较:
假如一个是null、一个是undefined,那末[相称]。
假如一个是字符串,一个是数值,把
字符串转换成数值
再举行比较。假如任一值是 true,把它转换成 1 再比较;假如任一值是 false,把它转换成 0 再比较。
假如一个是对象,另一个是数值或字符串,把
对象转换成基本范例的值
再比较。对象转换成基本范例,利用它的object.toString()
或许object.valueOf()
要领。