将带有逻辑运算符的表达式作为参数传递给函数意味着什么?!
例如:
myFunc(expr_1 || expr_2 || expr_3);
是否等同于以下内容?!:
var expr_all = expr_1 || expr_2 || expr_3;
myFunc(expr_all);
如果是这样,它应该如何工作,特别是如果所有三个表达式都评估为字符串(而不是布尔值),或者 if expr_1isundefined或其他什么?
谢谢。
将带有逻辑运算符的表达式作为参数传递给函数意味着什么?!
例如:
myFunc(expr_1 || expr_2 || expr_3);
是否等同于以下内容?!:
var expr_all = expr_1 || expr_2 || expr_3;
myFunc(expr_all);
如果是这样,它应该如何工作,特别是如果所有三个表达式都评估为字符串(而不是布尔值),或者 if expr_1isundefined或其他什么?
谢谢。
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,您可能会遇到问题。