1

ここに表示されている関数で、関数の引数をよりよく理解/確認しようとしています。

function newFunction(data, status){

関数は特にデータ変数とステータス変数に適用されますか?

議論がどのように機能するのかよくわかりません。

4

3 に答える 3

3

基本シナリオ

関数が定義されると、その()領域は入力に使用されます。これらの入力は、送信されるデータにマップされます。

function newFunction(data, status){
}
newFunction(1,2);

このシナリオでdataは、の値1が割り当てられ、スコープのstatus値が割り当てられます。2newFunction

不一致の入力

ただし、必ずしも直接マッピングされるとは限りません。送信される引数が少ない場合、割り当てられていない入力変数はになりundefinedます。

function newFunction(data, status){
}
newFunction(1);

このシナリオでdataは、の値1が割り当てられ、スコープのstatus値が割り当てられます。undefinednewFunction

引数オブジェクト

のスコープ内には、 。newFunctionと呼ばれるオブジェクトのような配列へのアクセスもありますarguments

function newFunction(data, status)
{
 var args = arguments;
}
newFunction(1);

このシナリオでは、変数はオブジェクトargsを保持しargumentsます。そこでargs.length、1つの引数のみが送信されたことを確認できます。args[0]この場合は、その引数値が得られます1

関数オブジェクト

newキーワードを使用して関数をオブジェクトにすることができます。new関数でキーワードを使用することにより、Functionオブジェクトが作成されます。Functionオブジェクトが作成thisされると、グローバルウィンドウの代わりに現在のFunctionオブジェクトを参照するために使用できます。

function newFunction(data,status){
 if( this instanceof newFunction ){
  //use as a Function object
  this.data = data;
 }else{
  //use as a normal function
 }
}
var myNewFunction = new newFunction(1);

このシナリオでmyNewFunctionは、はFunctionオブジェクトへの参照を保持し、ドット表記またはインデックス付けを介してオブジェクトとしてアクセスできます。myNewFunction["data"]そしてmyNewFunction.data今、両方とも1の値を保持しています。

于 2013-01-08T23:46:00.360 に答える
1

これは、関数がとパラメーターの両方を受け入れることを意味します。関数(引数とも呼ばれます)を呼び出すときにパラメーターを提供するには、関数を呼び出すプログラマー(あなた)が必要です。datastatus

簡単な例を見てみましょう。

function add(x, y) {
  return x + y;
}

ここでの関数は、2つの数値を受け取り、それらを足し合わせて、結果を返します。これで、プログラマーとして、機能を複製したり、アプリケーションで同じ機能を実行する必要があるときにコピー/貼り付けしたりすることなく、いつでも2つの数値を追加できるという利点があります。

何よりも、一緒に作業している別のプログラマーは、方法を気にせずに2つの数値を足し合わせることができ、関数を呼び出すことができます。

編集:関数の呼び出しは次のように機能します

var num1 = 10;
var num2 = 15;
var z = add(num1, num2); //z = 25
于 2013-01-08T23:38:47.583 に答える
0
function newFunction(data, status){ ... function code ... }

これは、newFunctionと呼ばれる関数のJavascript定義です。関数に引数を渡すことができます。これらは、関数が何かを実行することになっている、数値または文字列の変数です。もちろん、関数の動作/出力は、指定した引数によって異なります。

http://www.quirksmode.org/js/function.html

于 2013-01-08T23:57:59.273 に答える