javascript速记语法

时间:2012-09-02 08:09:06

标签: javascript syntax shorthand shorthand-if

我想知道如何以简写形式写出语句将执行

这个没有用,但我在插件中看到这种语法很多次 - 变量与语句混合等。

有人可以就正确使用这种简写语法给出解释吗? 如果第一个评估为真,我想“执行”不“评估”第二个语句!

var succes = !data.user||(window.location = "users/profile");

我知道第一个例子是简单的方法,这个更好,它还使用逗号,字符串之后的字符串语句,我想知道如何学习这种语法。

},
        hide: function (a,
        b) {
            if (f && !(500 > (new Date).getTime() - f.getTime())) {
                if (!a || "number" == typeof a) a = k();
                b || (b = $(".profile-popup"));
                j(a) && (b.fadeOut("fast"), m(!1, a));
                e && (clearInterval(e), e = null)
            }
        }
    }
}();

修改 我改变了我的第一个例子来使用&&在我的代码中,它工作,所以,就是那个 - 对于其他人来说 - ,如果使用window.location你应该使用绝对网址

我还找到了另一个详细解释over here

谢谢,理查德

2 个答案:

答案 0 :(得分:5)

我认为你错过了另一个=

var succes = !data.user || (window.location == "users/profile");

您的示例分配,而==是比较。

答案 1 :(得分:4)

!obj || obj = "something"的一般模式只是简写:

if (obj === undefined) {
    obj = "something";
}

这是因为!obj评估为false,如果它未定义(该模式似乎假设 obj将不会被定义为true )。

同样,模式f(a) && (g(b), h(c))是:

的简写
if (f(a) == true) {
    g(b);
    h(c);
}

对于引用的代码:

var succes = !data.user||(window.location = "users/profile");

这隐含地说:

  1. 如果未定义data.user,则将success设置为true。
  2. 否则(如果<{1}} 分配),则重定向 users / profile
  3. 确切的含义是任何人在不知道上下文的情况下猜测,但它似乎意味着“重定向配置文件屏幕,如果用户数据可用,否则......”