1

JavaScript 環境では、関数の前に変数を宣言して、グローバル レベルで変数に到達できるようにすることができます。例えば:

var a;
function something(){
  a = Math.random()
}

これは「a」をグローバル変数にしますか?

または使用しています...

var a = function(){
  var b = Math.random();
  return b;
}
document.write(a())

本当にそれを行う唯一の方法ですか?

関数「a()」を呼び出す以外に「b」をグローバルにする方法はありますか?

4

3 に答える 3

10

グローバル変数を宣言するには、基本的に 3 つの方法があります。

  1. 関数スコープ外のグローバルスコープで宣言します。
  2. ウィンドウ オブジェクトのプロパティとして明示的に割り当てるwindow.a = 'foo': .
  3. まったく宣言しない (非推奨)。変数を最初に使用するときにキーワードを省略するvarと、コードのどこで発生してもグローバルに宣言されます。

注 #1: strict モードの場合、変数を宣言しないと (上記の #3 のように) エラーが発生します。

注 #2:オブジェクトを使用しwindowてグローバル変数を割り当てることは (上記の #2 のように) ブラウザー環境では正常に機能しますが、グローバル スコープにはオブジェクトがないため、他の実装 ( nodejswindowなど) では機能しない可能性があります。別の環境を使用していて、グローバル変数を明示的に割り当てたい場合は、グローバル オブジェクトが何と呼ばれているかを認識しておく必要があります。

于 2013-01-14T04:24:36.493 に答える
2

これは「a」をグローバル変数にしますか?

var宣言は、変数を外側のスコープ (通常は関数のスコープ) に対してローカルにします。コードをグローバル スコープで実行している場合はa、グローバル変数になります。を省略することもできvarます。そうすれば、変数は暗黙的にグローバルになります(ただし、意図を示すには明示的な宣言の方が適しています)。

関数「a()」を呼び出す以外に「b」をグローバルにする方法はありますか?

b変数は常に関数に対してローカルでありa、削除しない限り、変数から離れることはありませんvar

于 2013-01-14T04:25:50.890 に答える
0

変数のグローバル スコープを作成することを考える前に、JavaScript のグローバルな名前空間の汚染を考慮する必要があります。宣言するグローバル変数が多いほど、アプリケーションが別のアプリケーションの名前空間と競合して壊れる可能性が高くなります。そのため、グローバル変数の数を最小限に抑えることが非常に重要です。

于 2013-01-14T04:49:52.843 に答える