、なぜJavaScriptを(zは最初に定義され得るような)は、zを初期化するためにJavascript:z = z || [] VARを使用しないときにエラーを投げます - なぜですか?
var z = z || [];
を受け入れない
が、VARせずに、それは(グローバル空間に)
z = z || [];
を、エラーがスローされます
(zが未定義の場合)
グローバル空間では、VARを使用する必要はありませんが、b e悪い習慣。
あなたは、これが
What is the purpose of the var keyword and when to use it (or omit it)?
注があることの宣言のような質問の重複であると言う前に、「あなたはグローバルスコープにいる場合は、その後に違いありません。」
明らかに、私の実際の例を考えれば、それは100%真実ではありません。
これは奇抜なことですか、正当な論理ですか?私はそれを学んだとの回答の概要を追加
:ティムへ
感謝を(下記参照)私の誤解の鍵は、(ジャバスクリプトの基本的な)
これを実現していませんでしたvar z;既に存在する場合は何もありません。
「var z」が常に初期化されると仮定すると、この式は両方向になるように見えます。
「var z」は、zが定義されていることを単純に確認しますが、既存の値には実際には影響しません。それから、もしzが既に存在するならば、それが使われていれば、変数はただ宣言されていますが、空になりますので使用されませんが、エラーはスローされません。
これはJavaScriptで問題をスコープと巻き上げのこの種の逸品です。 http://www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Hoisting
minitechとあまりにも貢献した皆に感謝します!
一般的なルールとして、実際のエラーメッセージをコピーすることは、通常、単に「エラーをスローする」よりも役に立ちます。 –