此篇文章不是100%的原创,是看了很多别人的文章,然后自己做的一个总结,所以里面会用到一些原文章里面的例子,或者图片。因为我觉得原作者写的例子很好,我自己想不出更好的,所以就借用了。之后会在文章末尾注明出处。

在JavaScript的世界里,条件语句的表达式(expression),可以是我们常见的关系表达式(1 < 2),可以是逻辑表达式(true || false),也可以是原始表达式(primary expression)。

 if(expression){
     statement;
 }

所谓的原始表达式,就是表达式的最小单位-不再包含任何其他的表达式。例如:

1.00 //一个数字
‘hello’ //一个字符串
true //布尔值
null //JavaScript的保留关键字null
this //JavaScript的保留关键字this
{} //一个对象

类似于以上的这些原始表达式,它们没有显示地告诉你当作为条件语句的表达式时,到底是true还是false,但是在日常的代码编写中,我们又时常会用到。那么对它们进行研究就显得很有意义了。

图片描述

上图是一个很全面的总结,接下来我们就一些平常不太注意到或者容易理解错的点用代码进行测试一下。首先我们编写一个测试函数

function isTrue(exp){
    return exp? 'truthey': 'falsey';
}

1: isTrue('') // falsey (empty string)
2: isTrue(new String('')) // truthey (an object)

3: isTrue(NaN) //falsey (NaN)
4: isTrue(new Number(NaN)) //truthey (an object)

5: isTrue([]) //truthey (array is object, even it is empty)
6: isTrue([0]) //truthey (An array with initialized is an object for sure)

PS: 文章素材出处:https://javascriptweblog.wordpress.com/2011/02/07/truth-equality-and-javascript/


nanaistaken
586 声望43 粉丝