由javascript的逻辑或运算所了解到的

今天在阅读同事写的代码过程中发现这样一段javascript代码:

 

function geturl(uitype,_backurl) {
    uitype = uitype||1;
    var _burl = _backurl||this.location.href;
    ....
}
 

 

里面的"||"运算符,在我的印象里他返回的应该布尔型,true或者fasle,但是这个函数中的变量肯定不是要返回布尔型。

 

于是查资料发现问题所在:

 

 

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

1.所有对象都被认为是 true。

2.字符串当且仅当为空时才被认为是 false。

3.null和undefined被认为是 false。

4.数字当且仅当为 0 时才是 false。

 

这里就能理解  var _burl = _backurl||this.location.href; 这句话

当_backurl参数为空的时候 _burl就等于this.location.href的值,

 

延伸:

var uitype = 0||1; 返回 1

var uitype = 0||"abc"; 返回 abc

var uitype = 1||"abc"; 返回 1

 

var uitype = 0||undefined; 返回 undefined

var uitype = undefined||0; 返回 0

 

 

javascript运算符与表达式:

 

括号(x) [x]中括号只用于指明数组下标
求反、

自加、

自减
-x返回 x 的相反数
!x返回与 x (布尔值)相反的布尔值
x++x 值加 1,但仍返回原来的 x 值
x--x 值减 1,但仍返回原来的 x 值
++xx 值加 1,返回后来的 x 值
--xx 值减 1,返回后来的 x 值
乘、除x*y返回 x 乘以 y 的值
x/y返回 x 除以 y 的值
x%y返回 x 与 y 的模(x 除以y 的余数)
加、减x+y返回 x 加 y 的值
x-y返回 x 减 y 的值
关系运算x<y x<=y 
x>=y x>y
当符合条件时返回 true 值,否则返回 false 值
等于、
不等于
x==y当 x 等于 y 时返回 true 值,否则返回 false 值
x!=y当 x 不等于 y 时返回 true 值,否则返回 false 值
位与x&y当两个数位同时为 1 时,返回的数据的当前数位为 1,其他情况都为 0
位异或x^y两个数位中有且只有一个为 0 时,返回 0,否则返回 1
位或x|y两个数位中只要有一个为 1,则返回 1;当两个数位都为零时才返回零
位运算符通常会被当作逻辑运算符来使用。它的实际运算情况是:把两个操作数(即 x 和 y)化成二进制数,对每个数位执行以上所列工作,然后返回得到的新二进制数。由于“真”值在电脑内部(通常)是全部数位都是 1 的二进制数,而“假”值则是全部是 0 的二进制数,所以位运算符也可以充当逻辑运算符。
逻辑与x&&y当 x 和 y 同时为 true 时返回 true,否则返回 false
逻辑或x||y当 x 和 y 任意一个为 true 时返回 true,当两者同时为 false 时返回 false
逻辑与/或有时候被称为“快速与/或”。这是因为当第一操作数(x)已经可以决定结果,它们将不去理会 y 的值。例如,false && y,因为x == false,不管 y 的值是什么,结果始终是 false,于是本表达式立即返回 false,而不论 y 是多少,甚至 y 可以导致出错,程序也可以照样运行下去。
条件c?x:y当条件 c 为 true 时返回 x 的值(执行 x 语句),否则返回 y 的值(执行 y 语句)
赋值、 
复合运算
x=y把 y 的值赋给 x,返回所赋的值
x+=y x-=y x*=y
x/=y x%=y
x 与 y 相加/减/乘/除/求余,所得结果赋给 x,并返回 x 赋值后的值

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值