0

我有下面的代码。需要知道如何将“a”用作函数参数,然后在同一函数内部再次将其用作对象“a”来调用另一个函数。代码末尾的“a || {}”是什么意思.

E.martin= function (a) {
a = mergein({ api_url: "/somefolder/",
          json_parameter: false,
          channel_id: null,
          after_response_hook: null},
          a || {});
4

3 回答 3

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

于 2013-09-13T11:55:16.463 回答
0

我可以回答一个|| {}; 部分

这是一种检查“a”是否已经存在的方法。如果它确实使用它,如果它不创建它作为一个新对象。

于 2013-09-13T11:54:58.400 回答
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'
于 2013-09-13T11:58:43.640 回答