Javascript 逻辑运算符(和运算符)
我遇到了以下逻辑运算符解决方法,但无法理解其背后的逻辑:Javascript 逻辑运算符(和运算符),javascript,logical-operators,Javascript,Logical Operators,我遇到了以下逻辑运算符解决方法,但无法理解其背后的逻辑: console.log(1和&2)将为您提供2 console.log(false&&X)将获取您的false console.log(true&&X)将使您UncaughtReferenceError:X未定义 任何人都能解释答案吗? < P>。请考虑下面的语句: A& & B。&操作符在这里所做的是仅当其值为false时才返回A,否则返回B。这就是AND操作符在JavaScript和大多数其他语言中的工作方式 这就解释了前两行代码。在
console.log(1和&2)
将为您提供2
console.log(false&&X)
将获取您的false
console.log(true&&X)
将使您UncaughtReferenceError:X未定义
任何人都能解释答案吗? < P>。请考虑下面的语句:<代码> A& & B</代码>。
&
操作符在这里所做的是仅当其值为false
时才返回A
,否则返回B
。这就是AND操作符在JavaScript和大多数其他语言中的工作方式
这就解释了前两行代码。在第三行中,语句应该返回
B
变量,该变量在这里是X
。但是,X
似乎是一个未声明的变量,因此控制台会引发错误请考虑下面的语句:<代码> A & & B < /代码>。&
操作符在这里所做的是仅当其值为false
时才返回A
,否则返回B
。这就是AND操作符在JavaScript和大多数其他语言中的工作方式
这就解释了前两行代码。在第三行中,语句应该返回B
变量,该变量在这里是X
。但是,X
似乎是一个未声明的变量,因此控制台会引发错误 查看&&
运算符的:
和&;如果可以将expr1转换为false,则返回expr1;否则,返回expr2。因此,当与布尔值一起使用时,如果两个操作数都为true,&&将返回true;否则,返回false
在第一个示例中,提供数字1和2作为操作数。无法将1转换为false
,因此将返回第二个操作数(恰好是2)
最后两个例子相当简单,因为涉及布尔值。如果任一操作数为false,则返回false
。只有第三个操作数给出错误的原因是,在第二个操作数中,由于短路从未检查第二个操作数(X
)。短路意味着一旦JS看到第一个值是false
,它甚至不必检查其他值。JS将false
视为第一个操作数并立即返回。查看&&
运算符的:
和&;如果可以将expr1转换为false,则返回expr1;否则,返回expr2。因此,当与布尔值一起使用时,如果两个操作数都为true,&&将返回true;否则,返回false
在第一个示例中,提供数字1和2作为操作数。无法将1转换为false
,因此将返回第二个操作数(恰好是2)
最后两个例子相当简单,因为涉及布尔值。如果任一操作数为false,则返回
false
。只有第三个操作数给出错误的原因是,在第二个操作数中,由于短路从未检查第二个操作数(X
)。短路意味着一旦JS看到第一个值是false
,它甚至不必检查其他值。JS将false
视为第一个操作数并立即返回。在JavaScript中,有truthy和falsy值。虚假的价值观是
false
(数字零)0
或”
(空字符串)”
和未定义
null
&&
操作符在JavaScript中的工作方式:
中的1和&2
是真实的,因此计算1
并将其作为表达式的值返回2
中的false&&X
是falsy,因此它作为表达式的值返回。将不计算第二个操作数(false
)X
中的true&&X
是真的,因此计算第二个操作数,这会引发错误,因为没有true
X
函数日志名(选项){
const name=options.name | |“默认名称”;
console.log(名称);
}
日志名({name:'foo'});//日志“foo”
日志名({name:'});//日志“默认名称”
日志名({});//记录“默认名称”
在JavaScript中,有truthy和falsy值。虚假的价值观是
false
(数字零)0
或”
(空字符串)”
和未定义
null
&&
操作符在JavaScript中的工作方式:
中的1和&2
是真实的,因此计算1
并将其作为表达式的值返回2
中的false&&X
是falsy,因此它作为表达式的值返回。将不计算第二个操作数(false
)X
中的true&&X
是真的,因此计算第二个操作数,这会引发错误,因为没有true
X