与 && 一起返回
Posted
技术标签:
【中文标题】与 && 一起返回【英文标题】:returning with && 【发布时间】:2011-05-28 06:40:05 【问题描述】:用&&返回值是什么意思?
else if (document.defaultView && document.defaultView.getComputedStyle)
// It uses the traditional ' text-align' style of rule writing,
// instead of textAlign
name = name.replace(/([A-Z]) /g, " -$1" );
name = name.toLowerCase();
// Get the style object and get the value of the property (if it exists)
var s = document.defaultView.getComputedStyle(elem, " ") ;
return s && s.getPropertyValue(name) ;
【问题讨论】:
只是为了澄清:您不会返回带有&&
的值,而是返回基于其他值的值。 :)
【参考方案1】:
return a && b
表示“如果 a 为假则返回 a,如果 a 为真则返回 b”。
相当于
if (a) return b;
else return a;
【讨论】:
在使用return的同时使用(a) ? true : false
不是更方便吗?
@AlexanderKim a ? true : false
只是 !!a
,如 if (a) ...
。 return a || b
是 if a return a else return b 正好相反。【参考方案2】:
逻辑与运算符 && 的工作方式类似。如果第一个对象是虚假的,则返回该对象。如果它是真的,它返回第二个对象。 (来自https://www.nfriedly.com/techblog/2009/07/advanced-javascript-operators-and-truthy-falsy/)。
有趣的东西!
编辑:
因此,在您的情况下,如果 document.defaultView.getComputedStyle(elem, " ")
没有返回有意义的(“真实”)值,则返回该值。否则返回s.getPropertyValue(name)
。
【讨论】:
不错不错。不确定它是否试图返回两个值。很有道理 只为您的用户名投票支持您。丁斯达啊啊啊。 (其实你的答案看起来也不错) @steve 返回两个值,通常使用对象或数组,因为如今解构变得如此容易。例如:function doStuff () return [a, b] ; const [a, b] = doStuff()
【参考方案3】:
AND && 运算符执行以下操作:
从左到右计算操作数。 对于每个操作数,将其转换为布尔值。如果 result 为 false,则停止并返回该 result 的原始值。 如果已评估所有其他操作数(即所有操作数均为真),则返回最后一个操作数。正如我所说,每个操作数都转换为布尔值,如果为 0,则 falsy 并且所有其他不同于 0 的值(1、56、-2 等)都是 真实的
换句话说,如果没有找到,AND 返回第一个假值或最后一个值。
// if the first operand is truthy,
// AND returns the second operand:
return 1 && 0 // 0
return 1 && 5 // 5
// if the first operand is falsy,
// AND returns it. The second operand is ignored
return null && 5 // null
return 0 && "no matter what" // 0
我们还可以连续传递多个值。看看第一个 falsy 是如何返回的:
return 1 && 2 && null && 3 // null
当所有值都为真时,返回最后一个值:
return 1 && 2 && 3 // 3, the last one
您可以在此处了解更多关于逻辑运算符的信息https://javascript.info/logical-operators
【讨论】:
以上是关于与 && 一起返回的主要内容,如果未能解决你的问题,请参考以下文章