将带有逻辑运算符的表达式作为参数传递给函数意味着什么?!
例如:
myFunc(expr_1 || expr_2 || expr_3);
是否等同于以下内容?!:
var expr_all = expr_1 || expr_2 || expr_3;
myFunc(expr_all);
如果是这样,它应该如何工作,特别是如果所有三个表达式都评估为字符串(而不是布尔值),或者 if expr_1
isundefined
或其他什么?
谢谢。
将带有逻辑运算符的表达式作为参数传递给函数意味着什么?!
例如:
myFunc(expr_1 || expr_2 || expr_3);
是否等同于以下内容?!:
var expr_all = expr_1 || expr_2 || expr_3;
myFunc(expr_all);
如果是这样,它应该如何工作,特别是如果所有三个表达式都评估为字符串(而不是布尔值),或者 if expr_1
isundefined
或其他什么?
谢谢。
myFunc(expr_1 || expr_2 || expr_3); Is it equivalent to the
下列的?!:
var expr_all = expr_1 || expr_2 || expr_3; myFunc(expr_all);
是的。它将第一个真值传递给函数。
真实值是不是false
, null
, NaN
, ""
, 0
, 或undefined
这是有效的,因为||
是逻辑或语句。它将从左到右返回第一个真实对象的值。否则它将返回false。
请参阅以下示例:
"a" || "b" //"a"
"" || "b" //"b"
"" || "" //""
"" || undefined //undefined
"" || [] // []
||
不是比较运算符。它是一个简写条件。如果左边的表达式计算结果为真,则返回,否则返回右边的表达式。
如果在评估完成之前评估未定义的变量:undefinedVar || 3
则整个评估失败并发生错误。
您的 2 个代码示例是等效的。
它们是等价的(如果您忽略中间变量)。
JavaScript 的逻辑 OR 运算符短路,所以它会在 OR 链中的第一个真值处中断并返回它。如果没有一个是真实的,最后一个将被退回。
真值与假值相反,假值是0
、''
、false
、null
、undefined
等。如果其中一个变量恰好是0
,您可能会遇到问题。