3

私のコードには次のものがあります。

var setTheme = function (color) {

};

function setTheme(color) {

};

関数名は実際には同じではありませんが、ここに同じ名前を付けました。関数を作成する 2 つの方法に違いはありますか?

4

3 に答える 3

3

違いがあります。関数定義を使用すると、定義全体が巻き上げられます。

foo(5); // Pops up 5

function foo(n) {
    alert(n);
}

一方、varでは、宣言は引き上げられますが、代入はそうではありません。

foo(5); // Error!

var foo = function(n) {
    alert(n);
};

私が気付いたもう 1 つの違いは、ECMAScript 5 の厳密モードの Google Chrome Canary (現在、少なくとも、他の多くのブラウザーで試したことはありません) では、関数定義を複数のレベルの深さにネストすることはできないということです。

!function() {
    'use strict';

    function Blah() {
        function Lol() { // Error.
        }
    }
}();
于 2012-07-05T03:38:38.467 に答える
1

そう、

get set の JS 関数

    var setTheme = function (color) {

    };

モデル値を取得/設定/削除するためのプライベート ユーティリティが必要な場合は、次のように関数を変数として宣言できます。これは、関数によって計算された宣言時に変数を割り当てるのに役立ちます。

対象: 簡易版

function setTheme(color) {

};

これは、JavaScript で関数を宣言する最も簡単な方法です。たとえば、単純setTheme(color)に 1 つのパラメーターを取り、オブジェクトに対してcolor単純な操作を実行colorするか、値を返すという単純な関数を書きたいとします。まさにこれを行うためのいくつかの方法を次に示します。

5 さまざまな方法: 興味深い読み物:

http://www.jquery4u.com/jquery-functions/5-ways-declare-functions-jquery/

于 2012-07-05T03:41:23.117 に答える
0

これは何度も答えられています。これらを呼び出すには多くの方法があります。私が理解しているように、最初のものは関数の割り当てであり、2番目のものは関数の宣言です。最初のものは最も近いスコープの一番上に巻き上げsetThemeられますが、実際に割り当てられた場所に到達するまで関数として定義されません。2 番目のものは関数を一番上に持ち上げるsetThemeので、宣言される前でもこの関数を使用できます。IMO、常に最初のものを使用してください。

于 2012-07-05T03:38:56.443 に答える