为什么这两个代码有不同的答案:
代码1答案是假的 代码2答案是真的
var x = Boolean (false);
if (x)
{
console.log (true);
}
else
{
console.log (false);
}
// answer is false
var x = new Boolean (false);
if (x)
{
console.log (true);
}
else
{
console.log (false);
}
//answer is true
答案 0 :(得分:1)
任何其值未定义或为null的对象,包括布尔值 值为false的对象,传递给a时计算结果为true 条件陈述。
来自https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Boolean
全局函数Boolean()可以在没有new的情况下调用类型转换,例如
How to add array of string into a specific attribute of a record?
使用new调用时,将另外创建一个包装器对象,这意味着您可以为该对象分配任意属性:
var foo = Boolean(param); // equivalent to `var foo = !!param`
答案 1 :(得分:1)
第一个区块省略了" new"关键字,x被赋值为Boolean(expr),这是一个将非布尔值转换为布尔值的函数。
第二个块创建一个Boolean对象,if条件返回true,因为x未定义。