我想知道爲什麼下面兩個表達式返回相同的結果,即當val_bool
始終是一個布爾[true
或false
]:三元操作和這個選擇有什麼區別?
('oninput' in document.documentElement && !val_bool) && 'first result' || 'second result';
和
('oninput' in document.documentElement && !val_bool) ? 'first result' : 'second result';
如果你打開控制檯並運行以下命令:
var val_bool = true;
('oninput' in document.documentElement && !val_bool) && 'first result' || 'second result';
second result
輸出。相同的結果被輸出時,我做出改變三元:
var val_bool = true;
('oninput' in document.documentElement && !val_bool) ? 'first result' : 'second result';
我不熟悉與所述第一邏輯表達式解析其結果的機制。
相關閱讀:https://en.wikipedia.org/wiki/Short-circuit_evaluation – apsillers
您是否使用開發控制檯來測試這兩個語句?他們表現不一樣 – zzzzBov
另外,你可能會得到低價,因爲它不完全清楚你不明白的東西。我不認爲這是你的錯*(你不知道你不知道什麼),但它確實使問題難以回答。你是否已經理解布爾邏輯運算符的機制以及短路是如何工作的?你知道JS中的邏輯運算符是如何將它們的操作數作爲「真理」還是「虛假」? – apsillers