0

这似乎是一个常见问题,但我没有找到任何可以帮助我理解的东西。

我有一堆引入了 bool 类型成员的项目。有些项目引入了真值,有些是假的。所以来自 c++ 我不希望这会返回“false”(item.introduced 是布尔值)

if ((show_introduced == "false") && (item.introduced)) {console.log(item.introduced)}; 

但我实际上将“假”和“真”视为“真”。

对我来说,这与它当然从不输出任何东西是一样的。

var a = false;
if (true && a) {console.log(a)};

&& 在 js 中的工作方式是否不同,或者我应该在其余代码的某个地方找到问题?

编辑:因为 item.introduced 是从 JSON 读取的,它实际上是一个字符串,所以这就是它不起作用的原因。

4

2 回答 2

2

不要尝试将布尔值与 true 或 false 进行比较,只需将它们用作布尔值

 if ( showIntroduced ) 

或者

 if ( ! showIntroduced )

&& 和 || 等逻辑运算符 JavaScript 中的行为与您对 C/C++ 的期望一样,具有相同的短路规则。

于 2013-10-21T07:17:51.743 回答
2

引号中的 'false' 使它成为一个字符串,这是真的。所以, "false" != false 写成这样

(show_introduced === false)

编辑: Javascript中的虚假值:

false (boolean) "" (一个空字符串) 0 (零) null undefined NaN

如果你从上面得到任何东西,它们是虚假的价值,其他一切都是真实的。

于 2013-10-21T07:13:27.577 回答