创建 JavaScript 布尔变量

Create JavaScript boolean variable

本文关键字:变量 布尔 JavaScript 创建      更新时间:2023-09-26
deletemode = new Boolean(false);
if(deletemode) alert("TRUE"); else alert("FALSE");
alert(deletemode);

我希望看到错误警报,但我看到的是真正的警报

我读了

MDN,它读了

deletemode = new Boolean(true);

这就是创建假布尔变量的方法

但是当我运行上面的语句时,我看到"TRUE",然后在第二个警报中我看到 false。

如果我这样做,它会做我希望它做的事情

if(deletemode===false) 

if(deletemode) 

JavaScript语法错误?

这是意外的原因是new Boolean(false)返回一个对象。在 JS 中,所有对象的计算结果都为真实值。这就是为什么您的测试发出警报"TRUE"的原因,因为"if"构造只是检查表达式是否真实。

此外,切勿使用 Boolean 构造函数创建布尔值。相反,只需使用文字值,truefalse

===严格相等运算符将返回false,因为Boolean对象和布尔文本并不严格相等。 事实上,即使这样也会返回 false,因为两个新创建的对象不是同一个对象:

new Boolean(true) === new Boolean(true)    // is false

但是,deletemode == false测试将返回true,因为它将在对象上调用.valueOf()方法并获取值false,因此正确比较等于false

alert()函数始终对其参数调用.toString(),因此也显示false而不是默认[Object object]

我想你可能会在下面的链接中找到一些答案。简短的回答:使用新的 Boolean() 构造函数会在您的值周围创建一个包装器,以便调用变量始终返回 true。如果你只想存储 true/false,而对保存值的变量没有任何额外的函数或逻辑,那么你可能应该直接分配它。即,var 删除模式 = 假

Java script中新布尔()的目的是什么?