短路:只存在于 &&和ll中,当满足一定条件会让右边代码不执行
原因:通过左边能得到整个式子的结果,因此没必要再判断右边,可以直接输出左边
短路:可以理解是直接输出当前
符号 | 短路条件 |
---|---|
&& | 左边为false就短路,直接输出左边的值 |
ll | 左边为true就短路,直接输出左边,无需看右边 |
// 在数学中:
// a||b a和b同时为假,才是的假的,有一个真就是真的
// a&&b a和b同时为真才是真的,有一个假就是假的
function fn(a,b) {
console.log(a,b);//undefined undefined
a=a||0;
b=b||0;
console.log(a+b);
}
fn();
fn(1,3);
console.log(1||8);//1 第一个是真的,则没必要看第二个
console.log(0||5);//5 第一个是假的,并不能判断整个式子的真假,还得看第二个
console.log(''||undefined);//undefined 如果都是假 则返回第二个
console.log('------&&------');
console.log(1&&8);//8 第一个数是真的,并不能判断整个式子是真的,还得看第二个
console.log(null&&5);//null 第一个是假的,则没必要看第二个
console.log(NaN&&"");//NaN 第一个是假的,则没必要看第二个