我有以下代码。需要知道“a”如何用作函数参数,然后在同一个函数内部再次用作对象“a”来调用另一个函数。代码末尾的“a || {}”是什么意思
E.martin= function (a) {
a = mergein({ api_url: "/somefolder/",
json_parameter: false,
channel_id: null,
after_response_hook: null},
a || {});
答案 0 :(得分:1)
//Here 'a' is a function arg
E.martin= function (a) {
//Here 'a' is overwritten by the returned value from mergein
a = mergein({ api_url: "/somefolder/",
json_parameter: false,
channel_id: null,
after_response_hook: null},
//Here 'a' is send to the function, if it's not null/false.
//if 'a' is null/false an empty object will be created and sent instead.
a || {});
mergein
可能会向arg a
添加一个函数。
答案 1 :(得分:0)
我可以回答一个|| {};节
这是一种检查“a”是否已存在的方法。如果它确实然后使用它,如果它没有创建它作为一个新对象。
答案 2 :(得分:0)
修改强>:
要回答您的实际问题(我原本以为您遇到了代码问题),代码的a || {}
部分说“要么使用'a',要么'a'未定义,请使用新的空对象({})“。
<强>建议强>:
我建议你在E.martin
方法中返回a,因为JavaScript中的对象没有被硬引用。如果不返回结果,则可能会丢失发送给方法的原始对象。
假设mergein
是一个连接两个对象的方法:
function mergein(new_obj, old_obj){
for(var i in new_obj){
old_obj[i] = new_obj[i];
}
return old_obj;
}
如果我们有原始方法,当我们得到结果时,我们将丢失原始对象键/值:
E.martin = function (a) {
a = mergein({ api_url: "/somefolder/",
json_parameter: false,
channel_id: null,
after_response_hook: null},
a || {});
}
var b = {foo:'bar'};
var result = martin(b);
console.log(result['foo']); // error
如果我们返回我们的a
对象,我们将使用添加的键/值返回原始对象:
E.martin = function (a) {
return mergein({ api_url: "/somefolder/",
json_parameter: false,
channel_id: null,
after_response_hook: null},
a || {});
}
var b = {foo:'bar'};
var result = martin(b);
console.log(result['foo']); // 'bar'