“铸造”的目的是什么?布尔运算符的返回值
What is the purpose of "casting" the return from a Boolean operator?
From下划线:
_.isElement = function(obj) {
return !!(obj && obj.nodeType === 1);
};
!!
的目的是什么?它认为and语句的结果总是为真或为假。
我曾见过这被用来"强制转换"为布尔类型。
!!
技巧确保输出为真或假。
当obj求值为假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;
请注意,如果obj
为0、NaN、null、undefined或空字符串,则表达式将计算为该值,而不是false
。如果需要确保返回一个显式布尔变量,则必须强制类型转换。
相关文章:
- 这是什么 ==- javascript 运算符
- jQuery/JS包含运算符或类似运算符
- javascript中的布尔条件
- 布尔表达式-与AND、OR逻辑运算符混淆以及它们的工作方式
- AngularJs一次绑定和布尔运算符的值顺序
- = vs === 布尔表达式的运算符
- &=运算符来减少布尔值
- 逻辑运算符||在javascript中,0代表布尔值false
- JavaScript中布尔值的指数运算符
- 0对'0'使用布尔运算符
- 布尔值的按位赋值运算符,而不是更长表达式(|= 运算符)
- JavaScript布尔表达式中的多个比较运算符
- “铸造”的目的是什么?布尔运算符的返回值
- JS中布尔运算符的优先顺序是什么?
- 做&&并且||运算符将其操作数转换为布尔值
- 布尔运算符如何工作||
- 为什么赋值运算符返回非布尔值
- 关于用和运算符改变标志布尔状态的问题
- 为什么在Javascript中布尔运算符可能既不返回false也不返回true ?
- 布尔运算符没有按预期工作