1. 関数を宣言する 3 つの方法 (関数の宣言) 方法 1: function functionName([parameters]){functionBody};
例 D1
function add(a, b)
{
return a b;
}
alert(add(1,2)); // 3
をこのように宣言すると、関数の内容が解釈されます。 (ただし実行されません。この関数を呼び出すまで実行されません) 同時に、add という名前のオブジェクトが作成されます。
方法 2: 名前のない関数 function を指定した変数 (var) に代入する 例 D2
var add=function(a, b)
{
return a b; >}
alert(add(1,2)); // 3
この宣言の構文は奇妙に見えますが、理解するのに役立ちます。オブジェクト」。この方法で宣言された関数の内容も解釈されますが、実行されません。
同時に、次のように定義することもできます:
D2A の例:
var add=function theAdd(a, b)
{
return a b;
}
alert(theAdd(1,2) )); // 3
alert(add(1,2)); // 3 つの
も生成します。関数名 theAdd または指定された関数 変数名 add は関数を呼び出します。
D2B の例:
var myObject= new Object();
myObject.add=function(a,b){return a b};
// myObject には "add" という名前のプロパティ/メソッドが追加されました
//以下のように使用できます
myObject.add(1, 2);
そして、この例は、オブジェクトのプロパティとしてカスタム関数を使用する必要があることを示しています。関数の種類 宣言メソッドは非常に便利で、OOP のアイデアに近いものです。
方法 3: new 演算子を使用して関数を宣言する
varName=new Function([param1Name, param2Name,...paramNName], functionBody);
例 D3:
var add=new Function("a", "b", "return a b;");
alert(add(3,4)); // 7 を生成します
2 つのパラメーター a と b 、および関数本体があります。 bを返す。ここでは、 new Function(...) が小文字の function ではなく大文字の Function を使用していることにも注意してください。これは、Function オブジェクトを作成することを示しています (new Object() が Object オブジェクトを作成することを思い出してください)。同時に、前のパラメータ名と次の関数本体が文字列形式で渡されていることもわかります (注: これらはすべて二重引用符で囲まれています)。多くのパラメーターを持つことができ、JavaScript は関数本体 (通常は右括弧に最も近いパラメーター) を自動的に識別します。もちろん、すべてのコードを同じ行に記述する必要はなく、複数行に記述して、途中で「 」または「 」を使用して接続することもできます。 " " と "" は、JavaScript が次の行の残りのコードを検索することを示します。
D3A の例
var add=new Function("a", "b",
"alert" // " "
"('adding ' a ' and ' b); // "" return a b ;");
alert(add(3,4)); // 7 を生成します
もちろん、このように関数を宣言すると、関数本体は解釈されません(実行時に解釈されるまで)、パフォーマンスが低下します。なぜ?以下の例を参照してください。
D3B の例
コードをコピーします コードは次のとおりです:
function createMyFunction(myOperator)
{
return new Function("a", "b", "return a" myOperator "b;");
}
var add =createMyFunction(" "); // 「加算」関数を作成します
varsubtract=createMyFunction("-") // 「減算」関数を作成します
var multiply=createMyFunction("*"); "multiply" function
// 関数をテストします
alert("result of add=" add(10,2)); // 結果は 12 です
alert("result of substract="subtract(10) ,2)); // 結果は 8
alert("multiply= multiply(10,2)) の結果は 20
alert(add); >
この例はさらに興味深いもので、実行中にパラメーター (myOperator) を渡すことによって 3 つの異なる Function オブジェクトを作成できます。その場合、インタプリタが createMyFunction を解釈しようとしても、返される「演算子」が何であるかが明確ではないため、解釈できなくなり、当然のことながらパフォーマンスが低下します。
もちろん、ユーザーが独自のカスタム関数を作成できるようにするなど、特別な目的がある場合は、この関数宣言方法を使用できますが、それでもこの方法での使用は避けるように努めるべきです。