JS的与或用法

查看ECMA规范,我们可以看到关于&& 和 || 如何运算的定义。如下:

lref && rref

 

1.Let lref be the result of evaluating LogicalANDExpression.

2.Let lval be GetValue(lref).

3.If ToBoolean(lval) is false, return lval.

4.Let rref be the result of evaluating BitwiseORExpression.

5.Return GetValue(rref).

 

lref || rref

 

1.Let lref be the result of evaluating LogicalORExpression.

2.Let lval be GetValue(lref).

3.If ToBoolean(lval) is true, return lval.

4.Let rref be the result of evaluating LogicalANDExpression.

5.Return GetValue(rref).

两个我们需要关注的信息

1、&&,||运算符是短路的,在判断lref为false/true的情况,直接return了。

2、返回值不是boolean类型,而是返回lref或者rref之一。

 

 

所以我们可以写出很多这样的表达式:

 

var Yahoo=Yahoo||{}   //用于定义类

var result= "ab"||"cd"   //用于赋值操作,减少if,else的判断

var result= true && "test"  //用于赋值操作,减少if,else的判断

 

这里需要注意,在转换lref的值为boolean的时候,有一些特殊数据的转换有如下规则:

 

+0、-0、""、null、false、undefined、NaN 均会被判断为 false。其余情况均为true。

 

根据以上规则,我们可以写出很多简洁的代码。但是请注意可阅读性和简洁性的平衡。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值