gpt4 book ai didi

javascript - if 语句中的 bool 运算符不起作用

转载 作者:行者123 更新时间:2023-11-30 08:55:26 26 4
gpt4 key购买 nike

有人可以解释这里发生了什么吗?我正在尝试使用 javascript !!(双爆炸)运算符 as described here连同HTML5 local storage (我正在存储 0 和 1 值并测试真实性,但我还需要一个丢失的键为假,因此在开始时未定义。

虽然它在类型转换时以 false 回显到控制台,但它不在“if”语句中。

var foo = undefined;

// outputs undefined
console.log(foo)

// typecast to non-inverted boolean
console.log(!!foo);

if (!!foo) {
console.log("If was false before, why won't this execute?");
}​ else {
console.log("It didn't work");
}​​​​​​​​​​​​​​​

产生:

undefined
false
It didn't work

http://jsfiddle.net/YAAA7/
(Chrome v 23.0.1271.97 和 Firefox 16.0.1,OS X 10.8.2)

编辑 - 更正代码:

(之前的“if”语句只是评估为 false,因此该分支永远不会运行。)

var foo = false;

// outputs undefined
console.log(foo)

// typecast to non-inverted boolean
console.log(!!foo);

if (!!foo == false) {
console.log("Matches for foo undefined, foo = 0 and foo = false");
} else {
console.log("Matches for foo = 1 and foo = true");
}​

http://jsfiddle.net/YAAA7/1/

最佳答案

这是预期的行为。如果你加倍不假,你就会得到假。这个 ,!l 是一个非运算符。这 !! 是两个非运算符。双非运算符有时用于转换为 bool 类型。

! false === true
!! false === false

关于javascript - if 语句中的 bool 运算符不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13920446/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com