javascript函数返回语句中的&&运算符不应返回布尔值

bal*_*teo 0 javascript

我有以下功能:

function getLabelContent(element) {
    var label = element.find('label');
    return label[0] && label.html();
 }
Run Code Online (Sandbox Code Playgroud)

我对return语句感到困惑,尤其是&&我认为用于评估布尔表达式的操作数的运算符.

上述退货声明意味着什么?

zzz*_*Bov 10

&&||运营商没有在JavaScript中返回布尔值.

a = b && c;
Run Code Online (Sandbox Code Playgroud)

基本上相当于:

a = !b ? b : c;
Run Code Online (Sandbox Code Playgroud)

a = b || c;
Run Code Online (Sandbox Code Playgroud)

基本上相当于:

a = b ? b : c;
Run Code Online (Sandbox Code Playgroud)

在某些情况下,这些运算符的合并行为很有用.

对于||运算符,它可用于帮助扩展可能存在或不存在的名称空间:

//use window.foo if it exists, otherwise create it
window.foo = window.foo || {};
Run Code Online (Sandbox Code Playgroud)

&&操作通常用于安全控制台日志:

//don't call console.log if there's no console
window.console && console.log('something');
Run Code Online (Sandbox Code Playgroud)