https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FOperators%2FLogical_OperatorsFor example, the following two functions are equivalent. function shortCircuitEvaluation() { doSomething() || doSomethingElse() }function equivalentEvaluation() { var flag = doSomething(); if (!flag) { doSomethingElse(); } }
function shortCircuitEvaluation() {
doSomething() || doSomethingElse()
}function equivalentEvaluation() {
var flag = doSomething();
if (!flag) {
doSomethingElse();
}
}
是否是这样:
1. 第一个表达式为true,因此执行第二个表达式;
2. 第二个表达式为false,因此不执行第三个表达式.既然第三个表达式都停止执行了,为什么第4个表达式会执行呢?
是否是这样:
1. 第一个表达式为true,因此执行第二个表达式;
2. 第二个表达式为false,因此不执行第三个表达式.既然第三个表达式都停止执行了,为什么第4个表达式会执行呢?
是否是这样:
1. 第一个表达式为true,因此执行第二个表达式;
2. 第二个表达式为false,因此不执行第三个表达式.既然第三个表达式都停止执行了,为什么第4个表达式会执行呢?
第一部分:
(true) && (false) && (console.log('2'))第二部分:
(console.log('s'))前一部分的结果为false,所以执行后面一部分。当&&连接两个表达式时,当前面的为false时终止后面表达式的执行,如果前面的表达式为true则继续执行后面的表达式;如果是||连接的两个表达式前一个为false时,继续执行后面的表达式,前面一个为true,则终止后面表达式执行。
既然关贴了,就不说答案。
看了你这个评论,才发现没注意到LZ的问题。(true) && (false) && (console.log('2')) 这句返回的是undefined自然要执行后面的。