JavaScript使用&&和||运算符决定语句是否执行

&&与||的基础

对于 a&&b,如果a为true,则返回b;如果a为false,则返回a;
对于 a||b,如果a为true,则返回a;如果为false,则返回b;

对于js中的或与运算,需要隐式的转换为boolean类型再来运算;转换规则为:

1.对象为true

2.非空number和string类型为true

3.其他为false,如(NaN,’’)以及表达式,语句(比如赋值语句等)

var a=3;
var b="test";
var c={name:'test'};
var d={};
 
console.log(a || b); // => 3
console.log(c || b); // => name{}
console.log(d || b); // => {}
console.log(true || b); // => true
 
console.log(false || b); // => 'test'
console.log(NaN || b); // => 'test'
console.log('' || b); // => 'test'
var a=3;
var b="test";
var c={name:'test'};
var d={};
 
console.log(a && b); // => 'test'
console.log(c && b); // => 'test'
console.log(d && b); // => 'test'
console.log(true && b); // => 'test'
 
console.log(false && b); // => fasle
console.log(NaN && b); // => NaN
console.log('' && b); // =>''

&&和||运算符决定语句是否执行

运算符”不返回”的那一部分,如果存在语句,则这些语句也不会被执行
看如下例子:
定义2个变量,变量abc为空,会被隐式转换为false
变量txt不空,会被隐式转换为true

var txt = 85,abc;
var result = txt || (console.log("我执行了"),"我执行了");
var result_2 = abc || (console.log("我执行了"),"我执行了");

输出:

result_2我执行了

发现只有第三行的console.log()语句被执行了,同时由于逗号表达式的缘故,变量result_2被赋值为"我执行了"

注意:
这整一条语句等号右边是一个运算表达式,最后表达式的返回值被赋值给变量"result_2",其中包裹

(console.log("我执行了"),"我执行了")

的”()括号”是运算表达式的括号,不是函数参数的那种括号

现在我们已经知道了"||“和”&&"运算符不返回的部分的语句不会被执行
也就是说,我们可以利用||和&&运算符判断某个变量是否为空,然后为函数制订灵活的返回值,如下

return r && i !== "temp" || (n[i] = new gedit.transformlist.TransformList(t), n[i]._init(), r = n[i]), r

大家来猜猜看,这个函数在什么情况下会返回什么呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值