「3.10.1 関数のスコープとホイスティング」

Function Scope and Hoisting

Curiously, this means that variables are even visible before they are declared. This feature of JavaScript is informally known as hoisting: JavaScript code behaves as if all variable declarations in a function (but not any associated assignments) are "hoisted" to the top of the function.

ブロックスコープを持つプログラミング言語では、変数を利用する場所のできるだけ近くで宣言するようにして、スコープをできるだけ狭くすることが、よいプログラミングスタイルだと一般的に言われています。一方で、JavaScript にはブロックスコープがないので、すべての変数を関数の先頭で宣言するようにしているプログラマもいます。このようにすることで、変数の本当のスコープとソースコードが同じになり、コードがわかりやすくなります。

In programming languages with block scope, it is generally good programming practice to declare variables as close as possible to where they are used with the narrowest possible scope. Since JavaScript does not have block scope, some programmers make a point of declaring all their variables at the top of the function, rather than trying to declare them closer to the point at which they are used. This technique makes their source code accurately reflect the true scope of the variables.

トラックバック - http://mnemonic.g.hatena.ne.jp/paragramma/20130314