4

次の関数では:

foo = function(a){
    if (!a) a = "Some value";
    // something done with a
    return a;
}

「a」が宣言されていない場合、関数の残りの部分で使用するデフォルト値を割り当てたいのですが、「a」はパラメーター名であり、「var a」として宣言されていませんが、この関数のプライベート変数ですか? 関数の実行後にグローバル var として表示されないように見えますが、これは標準的な (つまり、一貫性のある) 使用方法ですか?

4

3 に答える 3

3

関数スコープ内のプライベート変数です。グローバルスコープからは「見えません」。
あなたのコードに関しては、このように書いたほうがいいです

foo = function(a){
    if (typeof a == "undefined") a = "Some value";
    // something done with a
    return a;
}

!a0の文字列''、または単にnull.

于 2012-08-13T21:01:13.700 に答える
0

パラメータには常にプライベート関数スコープがあります。

var a = 'Hi';
foo = function(a) {
    if (!a) a = "Some value";
        // something done with a
        return a;
    };
console.log(a); // Logs 'Hi'
console.log('Bye'); // Logs 'Bye'
于 2012-08-13T20:58:42.967 に答える
0

はい、このコンテキストでaは、関数内にスコープがあります。これを使用して、ローカル スコープのグローバル変数をオーバーライドすることもできます。したがって、たとえば、それが常に JQuery フレームワークの変数になるfunction ($){....}(JQuery);ことがわかっているようにすることができます。$

于 2012-08-13T20:56:21.687 に答える