使用OR操作符检查变量值
checking a variable value using an OR operator
所以,今天我团队中的一个初级程序员写了下面一段代码:
if(status === ("incomplete" || "unknown"))
这显然不会达到他的目的,也就是:
if(status === "incomplete" || status === "unknown"))
但是我不能解释的是为什么第一段代码不能工作!或者为什么当'status'被设置为'incomplete'时,它的值为true,而当它被设置为'unknown'时,它的值为false…
在JavaScript中,如果||
运算符的计算结果为true
(即它不是false
, null
, undefined
, ""
或0
),则返回其第一个操作数,否则返回其第二个操作数。
在第一种情况下,("incomplete" || "unknown")
总是求值为"incomplete"
,因为它的求值为true。
整个条件变成:
if (status === "incomplete")
这解释了你正在观察的行为
("incomplete" || "unknown")
将返回"incomplete"
,与status
相比
但我无法解释的是为什么
status === ("incomplete" || "unknown")
不起作用
这是因为括号中的表达式首先求值。非空字符串incomplete
为真值,因此or表达式("incomplete" || "unknown")
产生"incomplete"
,然后仅将其与status
变量进行比较。
要缩短条件,有许多方法,包括值数组,正则表达式测试等
相关文章:
- JavaScript:单击时相对于父级增加变量值
- 如何通过ajax增加/减少PHP变量值并重新加载函数
- 如何从特定页面中提取php变量值
- JavaScript模数未正确递增变量值
- 替换另一个变量对象中的变量值
- mandrill合并标记不接受变量值
- 将变量值从一个javascript传递到另一个javascript
- 如何将变量值附加到另一个变量
- html类名中的数字形式的Javascript变量值
- 如何在C#中获取Javascript变量值
- 如何将C#变量值传递给javascript以使用amcharts
- 正在从addEventListener中获取变量值
- 使用变量值作为'名称标识符'javascript/html
- 为什么在以下代码段中无法访问中的变量值
- jquery检查变量值
- 如何检查 javascript 变量值是否为空或为空
- 如何在JavaScript中检查变量值
- 可以告诉我崩溃发生在哪里的Javascript IDE;让我检查一下此时的变量值
- If语句在javascript中只检查变量值一次
- 使用OR操作符检查变量值