Javascript逻辑运算符和字符串/数字

Javascript logical operators and strings/numbers

本文关键字:数字 字符串 逻辑运算符 Javascript      更新时间:2023-09-26

我不明白逻辑运算符是如何工作的。我知道它是如何处理布尔值的,但字符串或数字呢?

2 && 7
returns 7
"dog" && "cat"
returns "cat"

我明白了,若数字或字符串并没有相同的值,那个么就会返回第二个值。但为什么呢?我能在"现实世界"中使用它吗?

如果左手边为true,则计算为右手边。

如果左手边不为真,则计算为左手边。


CCD_ 1被评估为LHS。false也是如此。

CCD_ 3被评估为LHS。false也是如此。

true && false评估为RHS手侧。false也是如此。

true && true评估为RHS。true也是如此。

2 && 7评估为RHS。false && true0也是如此(这是真的)。

CCD_ 11被评估为LHS。0也是如此(这是错误的)。

"cat" && "dog"评估为RHS手侧。"dog"也是如此(这是真的)。


||以相同的方式工作,但如果为false,则返回LHS。


我能在"现实世界"中使用它吗?

使用它的主要方法是计算两个值是否都为true。这是操作员的重点。

(它还可以用作if测试的简写,并用于确定在某个地方分配两个值中的哪一个)。

&&运算符不返回布尔值,而是返回其一个操作数。因为操作数被求值为布尔值。由于2truthy,而7truthy,因此返回7与返回true相同,因为结果是1truthy。对于0 && 7,它返回0,因为这是false,这是预期的结果。

在布尔上下文中,此行为与返回truefalse相同,但它允许在其他上下文中使用有用的行为。最常遇到的是:

foo = foo || 'bar';

如果||(和&&)将返回一个布尔值,那么您必须编写以下内容:

if (!foo) {
    foo = 'bar';
}

或:

foo = foo ? foo : 'bar';

逻辑运算符如何工作在MDN逻辑运算符上有很好的解释

在"现实世界"中我能用它做什么?

您可以使用||运算符对多个键上的数组进行排序。

示例:

const myArray = [{ age: 25, name: 'Patrick' },
{ age: 22, name: 'Greta' },
{ age: 22, name: 'Fien' }];
myArray.sort((a, b) => (a.age - b.age) || a.name.localeCompare(b.name));
console.log('myArray=', JSON.stringify(myArray));

排序方法通常(不是在上面的例子中)返回1、0或-1,因此下面的内容可能有助于使其更容易理解。

console.log( 1 || 1); // 1
console.log( 1 || 0); // 1
console.log( 1 ||-1); // 1
console.log( 0 || 1); // 1
console.log( 0 || 0); // 0
console.log( 0 ||-1); //-1
console.log(-1 || 1); //-1
console.log(-1 || 0); //-1
console.log(-1 ||-1); //-1

此外,操作员的"短路评估"也是有益的。