2017-01-07 5 views
0

私は、Mozillaが提供する優れたJavascriptのドキュメントを読んでいて、プログラミングの経験から来る変数巻き上げJavascript可変ホイスト - WHY?

に関連するセクションに出くわした - これは私には絶対に吠え狂ったようです。なぜこのような機能(簡単に論理バグにつながる可能性がある)が言語の設計に導入されるのか理解できない。

私は機能の吊り上げがどのように役立つのかを見ることができます(ファイルの下にすべての宣言を残しておきたいのであれば、なぜそれをやりたいのかはわかりませんが)可変ホイストは私にとって絶対狂気のようです。

ここに何か不足していますか?

+0

おそらく、 'function/var'は変数を宣言してもJS内にブロックスコープを持ちません。 – Teemu

+5

変数**宣言**は、割り当てられているのではなく、ホイストされています。 – Nit

+0

これまでのコメントはありません。なぜなら、これが最初に言語の中に設計されている理由を説明したからです。それは奇妙に思えます(Mozillaの文書でも「珍しい」と記述されています)。私はこれを言語の中に設計する工学的な理由があるかどうかを知りたがっています。 –

答えて

1

ホイストは「機能」ではありません。それは「行動」です。

幸いにも、あなたはそれについて心配する必要は全くありません。あなたはそれについて何も知らなくても、何年もの間JSで非常に幸せにプログラムすることができました。多くの人が持っています。

ホイストについて知っている唯一の理由は、言語弁護士になりたい場合です。あなたがとにかく仕事をしたくないいくつかの企業によって与えられた、うまく設計された雇用テストに合格したいのであれば。

あなたが知っておく必要があるのは、関数の先頭に変数を宣言または初期化する必要がありますが、それはどうにかしていたことでしょうか?

吊り上げのMDNセクションをスキップして、あなたの好奇心を掻き立ててください。あなたが吊り上げに固執しているような本に出くわしたら(それに関しては、「時間的な不感地帯」)、別の本を見つけてください。

実際に知りたい場合は、WHYホイストが存在し、そのように機能しますが、20年後に誰かの心の隙間に戻らなければなりません。