JS中逻辑与和逻辑或的短路特性
短路特性
逻辑与(&&)和逻辑或(||)都是短路操作符:短路特性的意思就是如果第⼀个操作数已经决定了结果,那么永远不会对第⼆个操作符求值。
逻辑与 &&
根据下⾯的例⼦来体会⼀下逻辑与的短路特性
let found =true;
let result =(found && someUndecaredVariable);//会报错
javascript的特性console.log(result)//不会执⾏这⼀⾏
对上⾯的结果做⼀下解释:对于&&来说,左右两边都为true,结果才为true,⽽左边若为false,那么结果必为false。因为上⾯的found为true,所以逻辑与左侧的表达式不能决定结果,所以要执⾏逻辑与右边的表达式,⼜因为someUndecaredVariable未定义,所以报错!
found =false;
let result =(found && someUndecaredVariable);//不会报错
console.log(result)//会执⾏
因为上⾯的found为false,即逻辑与的左侧表达式为false,那么结果必为false,所以逻辑与的右侧表达式不会执⾏,⽽是将逻辑与的左侧表达式直接赋值给了result。这就是逻辑与的短路特性。
逻辑或 ||
let found =true
let result =(found || someUndecaredVariable);//不会报错
console.log(result)//会执⾏
对于||来说,左右两边都为false,结果才为false,⽽左边若为true,那么结果必为true。因为上⾯的found为true,那么结果必为true,所以逻辑或的右侧表达式不会执⾏,⽽是将逻辑或的左侧表达式直接赋值给了result。这就是逻辑或的短路特性。
let found =false
let result =(found || someUndecaredVariable);//这⾥会出错
console.log(result)//不会执⾏
因为上⾯的found为false,即逻辑或的左侧表达式不能确定运算的结果,所以要执⾏逻辑或右侧的表达式,⽽因
为someUndecaredVariable未定义,所以程序报错。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论