您的位置:首页 > 产品设计 > UI/UE

js中各种类型的在if条件中是true还是false

2014-07-16 15:57 537 查看
js的弱类型让人感觉很多东西都比较迷惑,例如变量在if条件中到底是true还是false,如果在强类型语言中将一个非boolean类型的变量放在if条件中时,是需要进行类型转换的,但是js不需要,下面来进行测试,测试常见的变量类型在if条件中的表现
!function test1(){

<span style="color:#ff0000;">var a,b=-1,c= 1,d= 0,e=null,f=undefined,g='',h="";</span>
if(!a){
console.log('a='+a)
}
if(!b){
console.log("b="+b)
}
if(!c){
console.log("c="+c)
}
if(!d){
console.log("d="+d)
}
if(!e){
console.log("e="+e)
}
if(!f){
console.log("f="+f)
}
if(!g){
console.log("g="+g)
}
if(!h){
console.log("h="+h)
}

}()


设定了各种变量类型,分别放入if条件中

执行结果

a=undefined
d=0
e=null
f=undefined
g=
h=
i=false

可以比较清晰的看到,当变量声明但未定义、为0、为null、为undefined、为空字符串时if均当作false进行处理。

我认为(未查证)if条件中的表达式会执行一次Boolean(value);方法,得到表达式中的值

其中value值如果是任何非空字符串,非零的数字值,非null对象,均转换为true,其他均为false

所以上面的现象就不难解释
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript 类型 if