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.martinJavaScript のオブジェクトはハード参照されないため、メソッドで a を返すことをお勧めします。結果を返さないと、メソッドに送信した元のオブジェクトが失われる可能性があります。

mergein2 つのオブジェクトを連結するメソッドがあるとします。

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 に答える