Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript逻辑运算符和字符串/数字_Javascript_Logical Operators - Fatal编程技术网

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

Javascript逻辑运算符和字符串/数字,javascript,logical-operators,Javascript,Logical Operators,我不明白逻辑运算符是如何工作的。我知道它是如何处理布尔值的,但是字符串或数字呢 2 && 7 returns 7 "dog" && "cat" returns "cat" 我明白了,若数字或字符串并没有相同的值,那个么返回第二个值。但是为什么呢?在“真实世界”中我能用它做什么呢?如果左手边是真的,那么它的计算结果就是右手边 如果左侧不为真,则其计算结果为左侧 false&&true计算为LHS。false也是如此 false&&false计算为LHS。fal

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

2 && 7
returns 7

"dog" && "cat"
returns "cat"

我明白了,若数字或字符串并没有相同的值,那个么返回第二个值。但是为什么呢?在“真实世界”中我能用它做什么呢?

如果左手边是真的,那么它的计算结果就是右手边

如果左侧不为真,则其计算结果为左侧


false&&true
计算为LHS。
false也是如此

false&&false
计算为LHS。
false也是如此

true&&false
的计算结果为右侧。
false也是如此

true&&true
计算为RHS。
正确吗

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

0和&7
计算为LHS。
0
(这是错误的)也是如此

“猫”和“狗”
的计算结果为右手侧。“狗”也是如此(这是真的)


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


在“真实世界”中我能用它做什么

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


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

如果左侧为真,则其计算结果为右侧

如果左侧不为真,则其计算结果为左侧


false&&true
计算为LHS。
false也是如此

false&&false
计算为LHS。
false也是如此

true&&false
的计算结果为右侧。
false也是如此

true&&true
计算为RHS。
正确吗

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

0和&7
计算为LHS。
0
(这是错误的)也是如此

“猫”和“狗”
的计算结果为右手侧。“狗”也是如此(这是真的)


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


在“真实世界”中我能用它做什么

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


(它还可用作缩写
if
测试和确定两个值中的哪一个分配到某处)。

运算符
&&
不返回布尔值,它返回其一个操作数。因为操作数无论如何都是作为布尔值计算的。由于
2
是真实的,
7
是真实的,因此返回
7
与返回
true
是相同的,因为结果是真实的。对于
0&&7
,它返回
0
,因为这是错误的,这是预期的结果

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

foo = foo || 'bar';
如果
|
(和
&&
)将返回布尔值,则必须编写以下代码:

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


&&
运算符不返回布尔值,而是返回其一个操作数。因为操作数无论如何都是作为布尔值计算的。由于
2
是真实的,
7
是真实的,因此返回
7
与返回
true
是相同的,因为结果是真实的。对于
0&&7
,它返回
0
,因为这是错误的,这是预期的结果

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

foo = foo || 'bar';
如果
|
(和
&&
)将返回布尔值,则必须编写以下代码:

if (!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));
sort方法通常(不在上面的示例中)返回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

此外,| |运算符的“短路评估”也是有益的。

在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));
sort方法通常(不在上面的示例中)返回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

此外,对| |运算符的“短路评估”也是有益的。

operators@AurA的Mozilla JavaScript文档添加文本链接使用
[text](link)
与github上的相同。operators@AurA的Mozilla JavaScript文档添加文本链接使用
[text](link)
与github上的相同。也许您列表中的一个不错的补充是
“”&&“dog”
。它的计算结果是
”。也许在您的列表中添加一个很好的选项是
”&&“dog”
。其计算结果为“