3.4-関数パラメータ
1840 ワード
javaScript関数はいくつのパラメータを伝達しても構いません.つまり、定義された関数が二つのパラメータしかないとしても、この関数を呼び出した時に必ず二つのパラメータを渡すとは限りません.パラメータは、1つ、3つを伝達してもよい.なぜかというと、JavaScriptのパラメータは内部で同じ配列のオブジェクトで表されているからです.関数が受信したのは常にこのクラスの配列オブジェクトであり、配列にどのパラメータが含まれているかに関係なく.実際には、このパラメータ配列は関数の体内でargmentsオブジェクトによってアクセスでき、関数に伝達される各パラメータを取得することができる.
このクラスの配列オブジェクトは、四角括弧文法を使用して各要素にアクセスできます.すなわち、最初の要素はargments[0]であり、第二の要素はargments[1]であり、これに類推します.length属性を使用して、実際にどれぐらいのパラメータが伝達されたかを決定することができます.
一、javascript関数におけるネーミングパラメータは、単に便利であるが、必要ではない.アーグメンツオブジェクトを使用して、同じ機能を実現することができるからである.例えば、次の二つの関数、一つはネーミングパラメータを利用して、一つはアーグメンツを利用して同じ機能を実現する.
function sayHi(name,message){
alert('hello'+name+'、'+message);
)
function sayHi(){
alert('hello'+argments[0]+'、'+argments[1])
)
二、javaScript関数を呼び出した時に渡されるネーミングパラメータは、argmentsに対応する値と同期できます.いいえ、相互に独立しています.
以下の通りです
関数がネーミングパラメータを定義している以上、使用者が呼び出し時に値を入力することを期待していると説明しています.使用者が値を入力してきたら、関数の内部で何の方法であれ、コーディネーターが伝達してきたパラメータが同じ値であるべきだと説明しています.だから、javaScriptエンジンはこの状況を数値同期します.使用者がネーミングパラメータに入っていない場合、ネーミングパラメータは、値がundefinedとして宣言されていないローカル変数として扱われ、この値とargmentsオブジェクトの値は、関数内部で異なる変数として使用される可能性があるので、同期できません.
javaScriptの関数パラメータは、呼び出し時に入ってきたパラメータだけが伝統的な意味のパラメータとして、いいえのものは局所変数として扱われます.
このクラスの配列オブジェクトは、四角括弧文法を使用して各要素にアクセスできます.すなわち、最初の要素はargments[0]であり、第二の要素はargments[1]であり、これに類推します.length属性を使用して、実際にどれぐらいのパラメータが伝達されたかを決定することができます.
一、javascript関数におけるネーミングパラメータは、単に便利であるが、必要ではない.アーグメンツオブジェクトを使用して、同じ機能を実現することができるからである.例えば、次の二つの関数、一つはネーミングパラメータを利用して、一つはアーグメンツを利用して同じ機能を実現する.
function sayHi(name,message){
alert('hello'+name+'、'+message);
)
function sayHi(){
alert('hello'+argments[0]+'、'+argments[1])
)
二、javaScript関数を呼び出した時に渡されるネーミングパラメータは、argmentsに対応する値と同期できます.いいえ、相互に独立しています.
以下の通りです
doSomething(0,1);
//
function doSomething(num1,num2) {
arguments[1] = 22;
alert(num1); //0
alert(num2); //22
num1 = 11;
alert(arguments[0]); //11
alert(arguments[1]); //22
}
doSomething(0);
//
function doSomething(num1,num2) {
arguments[1] = 22;
alert(num1); //0
alert(num2); //undefined
num1 = 11;
alert(arguments[0]); //11
alert(arguments[1]); //22
}
論理的に分析する:関数がネーミングパラメータを定義している以上、使用者が呼び出し時に値を入力することを期待していると説明しています.使用者が値を入力してきたら、関数の内部で何の方法であれ、コーディネーターが伝達してきたパラメータが同じ値であるべきだと説明しています.だから、javaScriptエンジンはこの状況を数値同期します.使用者がネーミングパラメータに入っていない場合、ネーミングパラメータは、値がundefinedとして宣言されていないローカル変数として扱われ、この値とargmentsオブジェクトの値は、関数内部で異なる変数として使用される可能性があるので、同期できません.
javaScriptの関数パラメータは、呼び出し時に入ってきたパラメータだけが伝統的な意味のパラメータとして、いいえのものは局所変数として扱われます.