在有些语言中,true和false的定义非常严格,但JavaScript对true和false的定义比较宽松。怎么个宽松法呢?
在JavaScript中,当真值(truthy)和假值(falsey或falsy)用于条件表达式中时,被视为true或false。
在JavaScript中,假值有5个,其余的所有值都是真值
-
假值:
undefined
、null
、NaN
、0
、""
(空字符串) -
余下的都是真值,在条件表达式中被视为
true
如:[]
(空数组)、{}
(空对象)、"0"
(非空字符串)
var test;
if(test)
或if(test==true) 结果为false,因为test当前值为undefined
var str="";
if(str)
或if(str==true)结果为false,因为str是空字符串
var str="abc";
if(str.match(/^\d{3}-?\d{4}$/));
或if(str.match(/^\d{3}-?\d{4}$/)==true);结果为false,因为match匹配失败返回null
//正则表达式的匹配模式ddd-dddd或ddddddd
ps.正则表达式详见 Javascript学习笔记——正则表达式