证明&&或||之后的表达式是否执行

如何证明逻辑运算符之后的表达式是否执行

在js中,证明逻辑运算符之后的表达式是否执行
本文实在node.js环境中,使用vi编辑器演示


&&
我们都知道&&为逻辑与,同真则真,有假则假;
当 exp1 && exp2 中的exp1为假,由于逻辑短路,不需要执行exp2,整个表达式结果为false。
例:

var gender = 'female'
var age = 13;
var result = gender == 'male' && age > 12;
问:age>12能否执行?如何证明?

答案肯定是否,证明如下:

var gender = 'female'
var age = 13
function foo(gender){
	console.log("判断性别...")
	return gender == 'male'
}
function bar(age){
	console.log("比较年龄...")
	return age > 12
}
if(foo(gender)&&bar(age)){
	console.log("比较结束,结果为"+(gender=='male'&&age>12))
}else{
	console.log("比较结束,结果为"+(gender=='male'&&age>12))
}

运行结果为:
运行结果


||
||为逻辑或,同假则假,有真则真;
当 exp1 || exp2 中的exp1为真,由于逻辑短路,不需要执行exp2,整个表达式结果为true。
过程同&&,此处不做赘述。


&& 和 || 同时存在于一个表达式
测试如下:

function one(){
    console.log("this is one!")
    return false
}
function two(){
    console.log("this is two")
    return true
}
function three(){
    console.log("this is three")
    return three
}

if(one() && two() || three()){
    console.log("测试结束,结果为真")
}else{
    console.log("测试结束,结果为假")
}

运行结果:
运行结果
分析:本例中,由于 && 和 || 的优先级相同,所以代码从左向右顺序执行,先执行one(),one()为false,逻辑短路了two(),执行了three(),并且执行结果最终是由three()决定的。


总结:
(1)当&&之前的表达式值为false,以及||之前的表达式值为true时,会发生逻辑短路,逻辑运算符后的表达式不会被执行。
(2)证明逻辑短路的方法:有效利用函数

如果大家还有什么疑问,欢迎探讨!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值