var a =a ||{}

首先,搞明白||的意思。
1、在js里面,||运算符,比如(A||B)有个很有意思的用处:
2、系统先判断A表达式的布尔值,是真是假。如果为真,直接返回A。如果为假,直接返回B(不会判断B是什么类型)。
所以,var a=a||{},这样写的意图就是,先考虑右侧的表达式 a||{}, 根据规则,先判断a的值是否为真(也就是判断a本身是否存在),如果a本身存在,则返回a。如果a不存在,则返回后面的{}。最后再将值返回给a。这样写,虽然看着比较复杂点,但是效率高,特别是判断一些变量,属性或者是传参是否存在,如果存在就直接用,不存在,就赋予一个空变量。相当于下面的简写:

if (a) {
    var a = a; 
} else {
    var a = {}; // 将一个空对象传给 a
}

[转] http://www.zhihu.com/question/22914542

发表评论
* 昵称
* Email
* 网址
* 评论