学习JavaScript数据结构与算法(第3版)
上QQ阅读APP看书,第一时间看更新

1.3.3 真值和假值

在JavaScript中,true和false有些复杂。在大多数编程语言中,布尔值true和false仅仅表示true/false结果。在JavaScript中,如Packt这样的字符串值,也可以看作true。

下表能帮助我们更好地理解true和false在JavaScript中是如何转换的。

我们来看一些代码,用输出来验证上面的总结。

    function testTruthy(val) {
      return val ? console.log('truthy') : console.log('falsy');
    }

    testTruthy(true); // true
    testTruthy(false); // false
    testTruthy(new Boolean(false)); // true (对象始终为 true)

    testTruthy(''); // false
    testTruthy('Packt'); // true
    testTruthy(new String('')); // true (对象始终为 true)

    testTruthy(1); // true
    testTruthy(-1); // true
    testTruthy(NaN); // false
    testTruthy(new Number(NaN)); // true (对象始终为 true)

    testTruthy({}); // true (对象始终为 true)

    var obj = { name: 'John' };
    testTruthy(obj); // true
    testTruthy(obj.name); // true
    testTruthy(obj.age); // age (属性不存在)