逻辑表达式如何在JavaScript中运行?

时间:2013-10-21 07:09:29

标签: javascript logic

这似乎是一个常见问题,但我找不到任何可以帮助我理解的内容。

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

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

但我实际上将'假'视为'真'。

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

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

和&&在js中工作方式不同,或者我应该在代码的其余部分找到问题?

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

2 个答案:

答案 0 :(得分:2)

引号中的

'false'使它成为一个字符串,这是真的。所以,“假”!=假 把它写成

(show_introduced === false)

修改 Javascript中的虚假值:

false(布尔值) “”(空字符串) 0(零) 空值 未定义 为NaN

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

答案 1 :(得分:2)

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

 if ( showIntroduced ) 

 if ( ! showIntroduced )

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