与 && 一起返回

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

【讨论】:

以上是关于与 && 一起返回的主要内容,如果未能解决你的问题,请参考以下文章

@click 作为链接返回未定义

将 Func 委托与 Async 方法一起使用

没有返回类型的函数委托

1023

20)

||与&&的返回值