为什么逻辑运算符(&&和||)不总是返回布尔结果?
为什么这些逻辑运算符返回一个对象而不是布尔值?
var _ = (obj.fn && obj.fn() ) || obj._ || ( obj._ = {} );var _ = obj && obj._;
我想了解为什么它返回obj.fn()
(如果已定义)OR的obj._
结果,而不返回布尔结果。
回答:
var _ = ((obj.fn && obj.fn() ) || obj._ || ( obj._ == {/* something */}))? true: false
将返回布尔值。
请注意,这是基于我的测试。我不会被完全依赖。
它是一个 赋值true
或 赋值的表达式false
。而是分配计算的值。
让我们看一下这个表达式。
表达式示例:
var a = 1 || 2;// a = 1
// it's because a will take the value (which is not null) from left
var a = 0 || 2;
// so for this a=2; //its because the closest is 2 (which is not null)
var a = 0 || 2 || 1; //here also a = 2;
您的表情:
var _ = (obj.fn && obj.fn() ) || obj._ || ( obj._ = {} );// _ = closest of the expression which is not null
// in your case it must be (obj.fn && obj.fn())
// so you are gettig this
另一个表达:
var a = 1 && 2;// a = 2
var a = 1 && 2 && 3;
// a = 3 //for && operator it will take the fartest value
// as long as every expression is true
var a = 0 && 2 && 3;
// a = 0
另一个表达:
var _ = obj && obj._;// _ = obj._
以上是 为什么逻辑运算符(&&和||)不总是返回布尔结果? 的全部内容, 来源链接: utcz.com/qa/401679.html