我正在研究一个项目,我发现在某些函数的末尾被称为jquery延迟对象,如下所示:
obj && obj.resolve();
&&
的目的是什么?自我放置的对象在开始时的目的是什么(obj
)?
首先,我认为这样的召唤是这样的:
如果obj
存在 - >然后调用该函数(resolve
)...但是我用一个简单的对象测试了代码并且它抛出了一个错误:
var b = {
a:function(){alert('ok')}
};
a && a.a(); // ReferenceError: a is not defined
b && b.a(); // works...
答案 0 :(得分:3)
它使用$(".GN").click(function() {
var yourVal = $(this).data('gnval');
$.ajax({
method: "POST",
url: "test.action", // correct url ?
data: {
gnval: yourVal
}
});
});
作为"后卫"。在用它做某事之前,它基本上检查&&
是否存在。
说明:任何obj
,false
,null
,空字符串,数字零都归类为"虚假值"。除了那些之外的任何东西都是" truthy值"。
undefined
等运营商从左到右进行评估。如果&&
左侧的值是真实的,它会尝试评估右侧的值。在这种情况下,如果&&
是真实的,它会评估obj
,基本上执行它。
答案 1 :(得分:3)
代码说'如果obj
被实例化且不为空,请致电obj.resolve()
'。
它的工作原因是Javascript将0
,null
和undefined
视为false
,将任何其他值视为true
。
答案 2 :(得分:0)
这是
的简写if (obj) {
obj.resolve();
}
答案 3 :(得分:0)
if(obj) {
}
检查obj是否未定义。
&&
表示如果第一个表达式为false(即:如果obj在您的情况下未定义),请不要再检查第二个参数,在您的情况下是obj.resolve();
如果obj是undefined