Javascript中能欺骗你的11个关于true false的问题

吴统威 on 编程语言 前端编程 HTML/CSS/JAVASCRIPT | 2015-12-29 09:05:52.0

这一章,我们来看看true和false的一些细节问题.

首先,我们先要确定下Javascript中的定义的细节.


假的(false): 在Javascript 6种都是false的是 null,undefined,"",0,NaN

真的(true): 两种都是true, 字面量true和不是false的都是true.


我们这里罗列了一些,可能会遇到的问题.我们以问答的形式


问: 'false' 是 false吗?

答: 不是.因为字符串的长度大于0.只有空字符串才是false.


问: ' '是false吗?

答: 不是.因为,他不是空字符串. 他里面是空白字符串


问: {}是false吗?

答: 不是的.它是一个对象.一个对象没有任何的属性,也是一个对象.所以,他不是false.


问: 那关于 [] 呢?

答: 他也是true.他是一个数组对象,所以同样是true.


问: 如果说''是false,那关于new String('')呢?

答: 通过字符串的构造函数来创建的空字符串,但是他是创建了一个字符串对象.一个很清晰的字符串实例对象.所以他是一个对象.他就不是false了.值为true.


问: 那告诉我关于 new Boolean(false).

答: 这个是真的.他创建了一个Boolean类型的对象.对象当然是真的.


问: Boolean(function(){})

答: 给Boolean函数传递一个真值,所以也是为true.


问: Boolean(/foo/)

答: true


问: true%1

答: 0. 当true做运算时,true会转化为1来进行进行.这里是求余,那结果是0.同理 false%1


问: ''%1

答: 0