我想知道为什么下面两个表达式返回相同的结果,即当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