JavaScript はドロップダウン メニューの値を決定し、それを変数に割り当てます 個人テストも可能です。 変数 i の定義は、グローバル変数として定義するのではなく、初期化関数に含める必要があります。 わずかに速い ######素早い###### ######遅い###### 少し遅い JavaScript で匿名関数を変数に割り当てることと、関数に直接名前を付けることの違いは何ですか もともと私はこのような一般的な質問に答えるのが好きではありませんでした。しかし、他の間違った回答が人々を誤解させるのを見るのは耐えられないので、簡単に答えることにします。 2 つの記述方法の最大の違いは次のとおりです。 var init = function () { }; は関数式です。この関数は、コードの実行が現在の行に達し、init に値が割り当てられた場合にのみ実行されます。 function init() {} は関数の宣言で、var と同様にコードの先頭で定義します。 したがって、次の 2 つの例は次のとおりです。 foo(); // 関数宣言後の foo 呼び出しは正常に呼び出せます。 foo が前に定義されているためです。 関数 foo() { trueを返す; } foo(); // 関数式の前に関数を呼び出し、エラーを報告します。現時点では foo 変数が存在しないためです。 var foo = function() { foo を返す; };ES5 では、関数はトップレベル スコープと関数スコープでのみ宣言できると規定されており、それ以外の場合は不正です。例えば:### ###真であれば ) {### // トップレベルと関数のスコープ外で関数を定義するのは誤りです。ブラウザが必ずしもエラーをスローするわけではありませんが、標準化されていません。 関数 foo() { trueを返す; } } ES6 ではブロックレベルのスコープの概念が導入され、この定義方法が許可されています。ブロックレベルのスコープで宣言された関数は、let を使用して宣言された変数と同様のスコープを持ち、ブロックレベルのスコープの外で呼び出すことはできません。 ###例えば:### { 関数 foo() { trueを返す; } } foo(); // 関数が宣言されているコード ブロックの外で関数を呼び出すと、エラーがスローされます。