首先是要理解运算符 ||是这样运算的:从第一个开始,遇到有意义的返回,不然返回最后一个表达式(注意不必定是Boolean值); &&是这样运算的:从第一个开始,遇到无心义的返回,不然返回最后一个表达式(注意同上); !是这样运算的:对表达式的值取非(注意不是对表达式)。 而后再试着 看看下面的代码: var ob1 = new Boolean(false); var ob2 = (ob1&&true); var ob3 = (true&&ob1); var ob4 = Boolean(ob1&&true); var ob5 = Boolean(true&&ob1); alert("ob2 = " + ob2 + " ob3 = " + ob3 + " ob4 = " + ob4 + " ob5 = " + ob5); 最后测试出来的结果是 ob2 = true ob3 = false ob4 = true ob5 = true
new Boolean(),new Boolean(false)是同一个东西,因为它是一个对象,故是有意义的,但其值为false,因此,能够看为“有意义的false”,因此结果为最后一个表达式的值。测试
原始的Boolean值和Boolean对象区别如此之大,因此切记两者区别,不要混淆使用。编码
一个Boolean对象,Boolean对象是对Boolean值的一个封装。
Boolean对象:一个值为true或false的Boolean对象。spa
这个问题是最近在体验一个牛客APP 作JavaScript 题目时候 遇到的 ,而后查询了一下资料,再通常编码的过程当中咱们仍是不会这样去写的,这样写没有多大的意义,直接使用Boolean的原始值就能够了,这样写再理解上也困难一些,意义也不大。不过偶尔装X 仍是能够的!
code