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

本文通过实验探讨了JavaScript中不同变量类型在if条件判断中的真假值行为。总结了哪些类型的值会被视为false,如未定义、0、null等,并推测了其背后的转换机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

所以上面的现象就不难解释

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值