JavaScript if(变量) 到底什么时候成立

JavaScript实在是神通广大,虽然写了很多年,一些简单的代码有时写着写着还是忍不住会怀疑。

比如if(variable) 这样的语句到底什么时候成立,具体是怎么判断的?

今天忍不住再来测试一下。

结论

返回false的变量值:
  • false
  • 0
  • 空字符串
  • undefined
  • null
  • NaN
返回true的变量值:
  • true
  • 1
  • 非空字符串
  • 对象
  • 数组

非空字符串包括空格(' '),'false''0'

空对象和空数组都返回true。

测试代码

       let count = 0;
       let func = (tt) => {
           count++;
           if (tt) {
               console.log(count + '. ' + tt + ' is true');
           } else {
               console.log(count + '. ' + tt + ' is false');
           }
       };

       let tt;
       func(tt);
       tt = 1;
       func(tt);
       tt = 0;
       func(tt);
       tt = true;
       func(tt);
       tt = false;
       func(tt);
       tt = 'true';
       func(tt);
       tt = 'false';
       func(tt);
       tt = '0';
       func(tt);
       tt = '';
       func(tt);
       tt = ' ';
       func(tt);
       tt = null;
       func(tt);
       tt = NaN;
       func(tt);
       tt = {};
       func(tt);
       tt = [];
       func(tt);

输出结果

1. undefined is false
2. 1 is true
3. 0 is false
4. true is true
5. false is false
6. true is true
7. false is true
8.  is false
9.   is true
10. null is false
11. NaN is false
12. [object Object] is true
13.  is true

其他逻辑运算

From: w3cshool

NOT

与逻辑 OR 和逻辑 AND 运算符不同的是,逻辑 NOT 运算符返回的一定是 Boolean 值。

逻辑 NOT 运算符的行为如下:

  • 如果运算数是对象,返回 false
  • 如果运算数是数字 0,返回 true
  • 如果运算数是 0 以外的任何数字,返回 false
  • 如果运算数是 null,返回 true
  • 如果运算数是 NaN,返回 true
  • 如果运算数是 undefined,发生错误

AND

逻辑 AND 运算的运算数可以是任何类型的,不止是 Boolean 值。

如果某个运算数不是原始的 Boolean 型值,逻辑 AND 运算并不一定返回 Boolean 值:

  • 如果一个运算数是对象,另一个是 Boolean 值,返回该对象。
  • 如果两个运算数都是对象,返回第二个对象。
  • 如果某个运算数是 null,返回 null。
  • 如果某个运算数是 NaN,返回 NaN。
  • 如果某个运算数是 undefined,发生错误。

OR

与逻辑 AND 运算符相似,如果某个运算数不是 Boolean 值,逻辑 OR 运算并不一定返回 Boolean 值:

  • 如果一个运算数是对象,并且该对象左边的运算数值均为 false,则返回该对象。
  • 如果两个运算数都是对象,返回第一个对象。
  • 如果最后一个运算数是 null,并且其他运算数值均为 false,则返回 null。
  • 如果最后一个运算数是 NaN,并且其他运算数值均为 false,则返回 NaN。
  • 如果某个运算数是 undefined,发生错误。
    在这里插入图片描述
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值