將具有邏輯運算符的表達式作爲參數傳遞給函數意味着什麼?在函數參數中使用表達式和邏輯運算符
例如:
myFunc(expr_1 || expr_2 || expr_3);
是否等同於以下:?!
var expr_all = expr_1 || expr_2 || expr_3;
myFunc(expr_all);
如果是這樣,則它應該如何,如果所有三個表達式的值轉換爲字符串以特別工作(如反對布爾),或者如果expr_1
是undefined
什麼?
謝謝。
將具有邏輯運算符的表達式作爲參數傳遞給函數意味着什麼?在函數參數中使用表達式和邏輯運算符
例如:
myFunc(expr_1 || expr_2 || expr_3);
是否等同於以下:?!
var expr_all = expr_1 || expr_2 || expr_3;
myFunc(expr_all);
如果是這樣,則它應該如何,如果所有三個表達式的值轉換爲字符串以特別工作(如反對布爾),或者如果expr_1
是undefined
什麼?
謝謝。
myFunc(expr_1 || expr_2 || expr_3); Is it equivalent to the
如下:?!
var expr_all = expr_1 || expr_2 || expr_3; myFunc(expr_all);
是的。它會將第一個真值傳遞給函數。
Truthy值是不false
,null
,NaN
,""
,0
,或undefined
這工作,因爲||
是邏輯或聲明的值。它將從左到右返回第一個對象的值,即truthy。否則它將返回false。
參見這些例子:
"a" || "b" //"a"
"" || "b" //"b"
"" || "" //""
"" || undefined //undefined
"" || [] // []
||
不是比較運算符。這是一個速記條件。如果左邊的表達式計算結果爲true,則返回該表達式,否則返回右邊的表達式。
如果在評估完成之前評估未定義的變量:undefinedVar || 3
那麼整個評估失敗併發生錯誤。
您的2個代碼示例是等效的。
它們是等價的(如果忽略中間變量)。
JavaScript的邏輯OR運算符會短路,因此它會在該OR鏈中的第一個真值中斷並返回它。如果他們都不真實,最後一個會被退回。
Truthy值是falsy值,它是0
,''
,false
,null
,undefined
等,如果這些變量中的一個恰好是0
,你可能會遇到問題的相反。
這將通過第一truthy值(或僅僅是最後一個,當沒有一個是truthy)的功能,那些3個變量之間。例如,如果字符串爲空,那麼'myFunc(false || null ||「foo」)','「foo」'將被傳遞 – Ian
,否則它是true。 – dandavis