2011-03-14 6 views
0

関数のargumentsプロパティを使用する正しい方法は何ですか? これは私が現在それを使用している方法ですが、私は、私はそれを正しく使用していないかなり確信している:JavaScriptのargumentsプロパティを最適に使用していますか?

まず、私は私のパラメータを定義します。

parameters = {}; 
parameters.ID = $tr.data('ID'); 
parameters.Name = 'Name goes here'; 
parameters.td = $td; 
UpdateName(parameters); 

と機能で:

var UpdateName = function(){ 
    var local = {}; 
    local.ID = arguments[0].ID; 
    local.Name = arguments[0].Name; 
    local.td = arguments[0].td; 

    local.jqXHR = $.ajax('Remote/Ajax.cfc', { 
     data: { 
      method:'UpdateName' 
      ,returnformat:'json' 
      ,ID:local.ID 
      ,Name:local.Name 
     } 
    }); 
    local.jqXHR.success(function(result){ 
     if (result.MSG == '') { 
      local.td.text(local.Name).addClass('success'); 
     } else { 
      local.td.addClass('err'); 
     }; 
    }); 
    local.jqXHR.error(function(result){ 
     local.td.addClass('err'); 
    }); 
} 
+0

ajax呼び出しが非常に迅速に終了した場合は、成功とエラーの関数が定義されていない可能性があります。 '$ .ajax'に渡される設定オブジェクトの一部としてそれらを定義する方が良いでしょう。 –

+0

このように関数を呼び出す理由は何ですか? –

+0

私はJavaScriptの構文を理解しようとしています。 –

答えて

1

JavaScript functionsは、名前付き引数を使用できます。あなたはjqXHRへの参照を保持する必要がないように、私はあなたがそれを使って何をやっていないので、もうコードを変更し

var UpdateName = function(local) { 
    $.ajax('Remote/Ajax.cfc', { 
     data: { 
      method:'UpdateName', 
      returnformat:'json', 
      ID:local.ID, 
      Name:local.Name, 
      success: function(result) { 
       if (result.MSG == '') { 
        local.td.text(local.Name).addClass('success'); 
       } else { 
        local.td.addClass('err'); 
       } 
      }, 
      error: function(result) { 
       local.td.addClass('err'); 
      } 
     } 
    }); 
} 

次のようにあなたのケースでは

が、これはあなたのコードを簡素化することができとにかく先頭のカンマも各行の最後に移動しましたが、これは単なる設定です。

+0

私のコードを掃除していただきありがとうございます。私はSQL Serverのためにコンマを置く習慣を持っていましたが、今からjsコードに関しては私の習慣を変えます。 –

+0

本当に、私が使っていた他の言語に似ているので、functon(local)の代わりにfunction(arguments)を使用したいのですが、 'arguments'という単語は使用できないキーワードです。 –

+2

本当にしたいのであれば、技術的に 'function(arguments)'を使うことができますが、私はそれをお勧めしません。それは特別な目的を持っていますが、 'arguments'は[予約語](https://developer.mozilla.org/ja/JavaScript/Reference/Reserved_Words)のようには見えないので、あなたはそれを見て再定義することができますフィット。 [http://jsfiddle.net/yxWZS/](http://jsfiddle。net/yxWZS /)を入力します。 –

3

あなたは技術的に正しく使用していますが、あなたのコードには実用的な点はありません。 arguments変数には、関数に渡される引数の配列のようなオブジェクトが含まれています。例えば。あなたの例では

function test() { 
    alert(arguments[0]); 
    alert(arguments[1]); 
} 
test("Hello", 123); // alerts Hello and 123 

、代わりにオブジェクトの、あなたは、引数としてプロパティを渡すことができ、argumentsからそれらを取得します。

5

argumentsオブジェクトは、任意の/未知数の引数を受け入れる関数に最も便利です。

function list(type) { 
    var result = "<" + type + "l>"; 

    // iterate through non-type arguments 
    for (var i = 1; i < arguments.length; i++) 
    result += "<li>" + arguments[i] + "</li>"; 

    result += "</" + type + "l>"; // end list 

    return result; 
} 

...このように使用することができます:MDCは、任意の長さのHTMLリストを作成するためのthis exampleを与える

var listHTML = list("u", "One", "Two", "Three"); 
// listHTML is "<ul><li>One</li><li>Two</li><li>Three</li></ul>" 

ためargumentsの、我々はlistに任意の数のアイテムを渡すことができますし、それだけで動作します。 (この場合でも、既知のパラメータであるtypeという名前が付けられ、2番目の要素でargumentsの反復が始まることに注意してください。)パラメータのリストは明確に定義されています。あなたの関数宣言。 argumentsをそのまま使用することは不要で、読みにくいです。

関連する問題