关于JS逻辑“或”运算符 (||)

对两个表达式执行逻辑“或”。
result = expression1 || expression2

参数
result
任何变量。

expression1
任何表达式。

expression2
任何表达式。

说明
如果两个表达式中有一个或两个等于 True,则 result 是 True。下面的表举例说明了 result 是如何被决定的:

expression1      expression2       result
True                 True                  True
True                  False                True
False                True                  True
False                 False                False


JScript 使用下面的规则来把非 Boolean 值转换为 Boolean 值:

所有对象都被认为是 true。
字符串当且仅当为空时才被认为是 false。
null 和 undefined 被认为是 false。
数字当且仅当为 0 时才是 false。

上面是JS帮助文档中关于逻辑“或”的说明,但是今天在Ajax在源框架prototype.js中可以看到
Object.extend(this.options, options || {});
的用法(关于Object.extend()实现对象的继承)

影响中 “||” 运算符一直都用作逻辑运算,返回boolean类型数据。那么这里“options || {}”会返回boolean数据吗?
下面看一个小实验
代码:
<script>
var a = {
b :'b'
};
document.write(a || {});
</script>
运行结果:
[object Object]

代码:
<script>
var a = {
b :'b'
};
document.write((a || {}).b);  
</script>
运行结果:
b

代码:
<script>
var a = {
b :'b'
};
document.write(({} || a).b);
</script>
运行结果:
undefined

代码:
<script>
var a = {
b :'b'
};
document.write(true || a);
</script>
运行结果:
ture

所以我们可以得出结论
expression1为true(这时不考虑expression2)
判断是否为boolean类型,
      是 返回true
      否 返回expression1
expression1为false
expression1为true,判断是否为boolean类型,
      是 返回true
      否 返回expression2
expression1为false
expression1为false,判断expression1是否为boolean类型
      是 判断expression2是否为boolean类型
       是 返回false
       否 返回expression2
      否 返回expression1

 

<div style="background:red">aaaaa</div>

 
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值