日期:2014-05-16  浏览次数:20355 次

由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运算符与表达式:

?

括号