来自 underscore :
_.isElement = function(obj) {
return !!(obj && obj.nodeType === 1);
};
!!
的目的是什么。它认为 and 语句的结果总是真或假。我已经看到这被用作“转换”为 bool 类型的方式。
但我认为这里没有必要。
最佳答案
!!
技巧确保输出为真或假。
当 obj 的计算结果为 false-y 值(例如 ""或 0)时,表达式 obj && ..
将导致 obj 的值。
有时输入对象与结果无关,而这种“转换”(根本不是转换,而是强制转换)会清理 API 并避免泄漏细节 - 可以确保只返回 true 或 false。
这是 a && b
的 TTL,注意结果不一定是真或假:
a b a && b
------- ------ ------
TRUTH-y ANY b
FALSE-Y ANY a
这是
!e
的 TTL,结果始终为真或假:e !e !!e
------- ------ ------
TRUTH-y false true
FALSE-y true false
表达原始表达式的另一种方法,我实际上经常使用它:
return obj ? obj.nodeType === 1 : false;
关于javascript - "casting"从 bool 运算符返回的目的是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16365886/