スコープリークにつながるいくつかの変数の初期化はなぜですか?

ANRアップグレードバージョン

私には、JavaScriptのドキュメントを参照してvar hoisting私が見つけたセクションであり、いくつかの変数の初期化をしての下に与えられました。

var x = 0;

function f(){
  var x = y = 1; 
}
f();

console.log(x, y); // outputs 0, 1
// x is the global one as expected
// y leaked outside of the function, though! 

として例外を取得すると仮定しますUncaught Reference Error: y is not definedただし、スコープがリークしているため発生しておらず、表示されてい0,1ます。

なぜそれが詳細に起こっているのか、そして何がこれを起こしたのかを知ることができますか?最後に、パフォーマンス関連の問題はありますか?

デニーズセギュレ

あなたは宣言していませんy

var x = y = 1; 

と同等です

y = 1;
var x = y; // actually, the right part is precisely the result of the assignement

宣言されていない変数はグローバル変数です(あなたがでない限りstrictモード、それは誤りです)。

あなたが言及している例がありました、異なっていたカンマ複数の宣言構文の一部ですが

あなたはであなたのコードを修正することができます

var y=1, x=y;

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

BASHで最初にいくつかの変数がエコーしないのはなぜですか

分類Dev

forループが2つのスコープの変数を定義できないのはなぜですか?

分類Dev

コンストラクター初期化リストで静的変数を初期化できないのに、コンストラクター本体では初期化できるのはなぜですか

分類Dev

初期化につながる可能性のあるすべてのルートが処理されたにもかかわらず、Javaが初期化されていない変数について文句を言うのはなぜですか?

分類Dev

なぜangularjsスコープが初期化前にアクセス変数を許可するのか

分類Dev

パス変数がないのに、Windows cmdからいくつかのアプリを起動して実行できるのはなぜですか?

分類Dev

変数がスコープ外にならないのはなぜですか?

分類Dev

forループの初期化でletを使用する場合、囲んでいるスコープでlet変数を使用できないのはなぜですか?

分類Dev

1つだけを変更しようとしているのに、コードが複数のリスト要素を変更するのはなぜですか?

分類Dev

ブレースリストの初期化ではなく、通常の初期化の副作用で、この名前のない一時的なコンストラクターが省略されるのはなぜですか?

分類Dev

このスーパー初期化関数で1つの引数を渡すように要求するエラーが発生するのはなぜですか

分類Dev

JavaScriptの変数をnullで初期化するか、まったく初期化しないのはいつですか?

分類Dev

変数がないのにメインがスタックフレームを初期化するのはなぜですか

分類Dev

初期化されていない変数についてjavacが文句を言うのはなぜですか?

分類Dev

変数を初期化するときに、次のコードが依存するのはなぜですか?

分類Dev

Rubyで初期化されていないインスタンス変数がnilを返すのに、初期化されていないクラス変数でエラーが発生するのはなぜですか?

分類Dev

変数の各フィールドを割り当てたのに、コンパイラが初期化されていない変数について警告するのはなぜですか?

分類Dev

初期化されていない変数に「nil」ではなくガベージが含まれているのはなぜですか?

分類Dev

「変数がスコープ内にない」のはなぜですか

分類Dev

ラムダ実行でレイジー変数を初期化する必要がないのはいつですか?

分類Dev

初期化コードの前に環境変数が正しくロードされないのはなぜですか?

分類Dev

Javaがデフォルトでクラス変数のみを初期化し、ローカル変数は初期化しないのはなぜですか?

分類Dev

Javaがデフォルトでクラス変数のみを初期化し、ローカル変数は初期化しないのはなぜですか?

分類Dev

コンストラクターがある場合でも、変数がデフォルト値に初期化されるのはなぜですか

分類Dev

Highstockの初期化でシリーズ変数がnullに設定されるのはなぜですか?

分類Dev

C ++で「「初期化中」:「初期化リスト」から「_Objty」に変換できません」というエラーが発生するのはなぜですか?

分類Dev

初期化されていないローカル変数を介して静的コンテンツにアクセスできないのはなぜですか?

分類Dev

この変数がスコープ外にあるのはなぜですか?

分類Dev

ユーザー提供のデフォルトコンストラクターが初期化されていないメンバーにつながるのはなぜですか?

Related 関連記事

  1. 1

    BASHで最初にいくつかの変数がエコーしないのはなぜですか

  2. 2

    forループが2つのスコープの変数を定義できないのはなぜですか?

  3. 3

    コンストラクター初期化リストで静的変数を初期化できないのに、コンストラクター本体では初期化できるのはなぜですか

  4. 4

    初期化につながる可能性のあるすべてのルートが処理されたにもかかわらず、Javaが初期化されていない変数について文句を言うのはなぜですか?

  5. 5

    なぜangularjsスコープが初期化前にアクセス変数を許可するのか

  6. 6

    パス変数がないのに、Windows cmdからいくつかのアプリを起動して実行できるのはなぜですか?

  7. 7

    変数がスコープ外にならないのはなぜですか?

  8. 8

    forループの初期化でletを使用する場合、囲んでいるスコープでlet変数を使用できないのはなぜですか?

  9. 9

    1つだけを変更しようとしているのに、コードが複数のリスト要素を変更するのはなぜですか?

  10. 10

    ブレースリストの初期化ではなく、通常の初期化の副作用で、この名前のない一時的なコンストラクターが省略されるのはなぜですか?

  11. 11

    このスーパー初期化関数で1つの引数を渡すように要求するエラーが発生するのはなぜですか

  12. 12

    JavaScriptの変数をnullで初期化するか、まったく初期化しないのはいつですか?

  13. 13

    変数がないのにメインがスタックフレームを初期化するのはなぜですか

  14. 14

    初期化されていない変数についてjavacが文句を言うのはなぜですか?

  15. 15

    変数を初期化するときに、次のコードが依存するのはなぜですか?

  16. 16

    Rubyで初期化されていないインスタンス変数がnilを返すのに、初期化されていないクラス変数でエラーが発生するのはなぜですか?

  17. 17

    変数の各フィールドを割り当てたのに、コンパイラが初期化されていない変数について警告するのはなぜですか?

  18. 18

    初期化されていない変数に「nil」ではなくガベージが含まれているのはなぜですか?

  19. 19

    「変数がスコープ内にない」のはなぜですか

  20. 20

    ラムダ実行でレイジー変数を初期化する必要がないのはいつですか?

  21. 21

    初期化コードの前に環境変数が正しくロードされないのはなぜですか?

  22. 22

    Javaがデフォルトでクラス変数のみを初期化し、ローカル変数は初期化しないのはなぜですか?

  23. 23

    Javaがデフォルトでクラス変数のみを初期化し、ローカル変数は初期化しないのはなぜですか?

  24. 24

    コンストラクターがある場合でも、変数がデフォルト値に初期化されるのはなぜですか

  25. 25

    Highstockの初期化でシリーズ変数がnullに設定されるのはなぜですか?

  26. 26

    C ++で「「初期化中」:「初期化リスト」から「_Objty」に変換できません」というエラーが発生するのはなぜですか?

  27. 27

    初期化されていないローカル変数を介して静的コンテンツにアクセスできないのはなぜですか?

  28. 28

    この変数がスコープ外にあるのはなぜですか?

  29. 29

    ユーザー提供のデフォルトコンストラクターが初期化されていないメンバーにつながるのはなぜですか?

ホットタグ

アーカイブ