我想知道如何以简写形式写出语句将执行
这个没有用,但我在插件中看到这种语法很多次 - 变量与语句混合等。
有人可以就正确使用这种简写语法给出解释吗? 如果第一个评估为真,我想“执行”不“评估”第二个语句!
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。
谢谢,理查德答案 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");
这隐含地说:
success
设置为true。确切的含义是任何人在不知道上下文的情况下猜测,但它似乎意味着“重定向配置文件屏幕,如果用户数据可用,否则......”