这一章,我们来看看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