false || true || true && console.log('a');
false || false || true && console.log('b');//有输出
谁能解释一下这段代码为什么输出了b没有输出a
按理来讲a,b都有输出才对啊
首先从左往右计算,按照短路原则第一行代码和第二行代码运算结果都是
true && console.log()
所以都会有输出才对啊,可结果却是令人惊讶
你说错了啊,第一行因为中间的true,导致右侧的表达式是不执行的,所以a不输出
a表达式先计算
(false || true )|| true && console.log('a');
false || true 结果是true
那你的表达式就等价于
true|| true && console.log('a');
因为它是认为true||(右边所有),左边第一个表达式时true了,所以右边不管是什么就不执行了