ホームページ >ウェブフロントエンド >jsチュートリアル >Javascript関数のパラメータ使用法の分析_JavaScriptスキル

Javascript関数のパラメータ使用法の分析_JavaScriptスキル

WBOY
WBOYオリジナル
2016-05-16 18:31:31804ブラウズ

まず、関数は JS の識別子でもあり、新しい変数に割り当てることも、この変数を通じて呼び出すこともできます。これは C 言語の関数ポインターに少し似ていますが、次のコードのようにまったく同じではありません:

コードをコピー コードは次のとおりです。

function myfun() {
alert("関数呼び出し");
} var fun =
fun( );

もう 1 つ言及する価値があるのは、JS の関数のパラメーターが必ずしも厳密に一致するわけではないということです。たとえば、fun(aa,bb) のような関数がある場合です。この関数を呼び出すときは、2 つのパラメータを彼に渡す必要があります。しかし、JS では、1 や 3 など、任意の数のパラメータを渡すことができ、問題ありません。 JS で渡されるパラメーターは、関数が呼び出されるたびに、関数が呼び出されたときに渡されるすべてのパラメーターを格納する配列になります。次のコードのように、関数を宣言するときに仮パラメータを指定することもできます:

コードをコピー コードは次のとおりです:
関数 args() {
if (arguments[0] != 未定義) {
alert(arguments[0])
}
}
args; ( ); // 何も出力しません
args("hehe"); // パラメータ値をポップアップします

上記のように、引数配列の各添え字は 0 から始まり、次の値に対応します。渡される各パラメータについて、指定された位置にパラメータがない場合、そのパラメータは未定義になります。
arguments.length を使用して、渡されるパラメータの数を決定できます。たとえば、このメソッドは非常に便利です。この機能を使用して、C 言語の printf 関数をシミュレートできます:

コードをコピー コードは次のとおりです:
function format() {
if (arguments.length == 0) {
return "";
}
var formatter = argument[0]; (var i = 1; i < argument.length; i ) {
formatter = formatter.replace(new RegExp("\{" (i-1) "\}","gm"), argument[i ]);
}
戻りフォーマッタ;
}
alert("こんにちは、{0}、これは {1} の機能です!","world","javascript") ;


上記のコードは、フォーマットされた出力の基本機能を実装しているだけです。もちろん、興味があれば、これをさらに改良することもできます。最後に、callee 属性についても説明します。 、調整可能な現在の関数を表します。この属性値は場合によっては依然として役立ちます。次のコードを考えてみましょう。


function sum(num ) {
if (num == 1) {
return num;
} else {
return num sum(num - 1);
var mysum; = sum;
alert(mysum(5)); // 出力 15
sum = function() { return 1;
alert(mysum(5));

これは再帰的な合計関数です。mysum は最初の sum と同じ関数です。プログラムの実行中に sum 関数本体が変更されると、関数の呼び出し結果は異なります。これなら、そのような問題はありません~



コードをコピーします
コードは次のとおりです: function sum( num) { if (num == 1) { return num;
} else {
return num argument.callee(num - 1); }
var mysum = sum;
alert(mysum(5)); // 出力 15
sum = function() { return 1; /output 15


上記のように、外部参照がどのように変化しても、呼び出し先は現在呼び出された関数を指しますが、JS で再帰を記述する場合は、これに注意する必要があります。
この種のエラーは通常は発生しませんが、発生した場合、原因を見つけるのは簡単ではなく、多くの時間が無駄になります。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。