1

JavaScript で、変数を返したいが、それを変更したり、グローバル スコープに漏らしたりしたくない場合、次のように 1 行で定義して返すことはできますか?

return var Foo = 'bar'

ただし、これはどこでも見たことがないと思います。より一般的には次のように表示されます。

var Foo = 'bar'
return Foo

最初のものは少し冗長ではありませんが、それは悪い習慣ですか?

4

3 に答える 3

6

変数を必要なスコープで宣言する必要があります。その後、値を設定して、1 行で返すことができます。

var Foo; // Declares Foo in this scope, though this expression has no L-Value
return (Foo = 'bar'); // Sets Foo to 'bar' and returns the value of Foo

なぜあなたがこれをしているのかは疑問ですが。理想的にFooは、親スコープの別の場所で宣言されます。または、 Foo の値を囲む新しい関数を返します。

于 2013-10-02T19:45:46.437 に答える
3

あなたが何をしようとしているのかを理解せずに有用な答えを提供するのは少し難しいですが、これは:

return var Foo = 'bar'

は有効な JavaScript ではないため、そのようにすることはできません。

2番目の例は冗長であることに同意します-関数を返すときにのみ参照する場合、関数で変数を宣言する意味はありません。その冗長性を取り除く方法は、変数をまったく宣言しないことです。

function exampleFunction() {
    return 'bar';
}
于 2013-10-02T19:47:44.920 に答える
3

範囲外になると、なぜそれをしたいのかわかりませreturnん。

やるだけ

return 'bar';
于 2013-10-02T19:46:51.500 に答える