ローカル変数は関数の先頭で宣言する
ローカル変数は「宣言された関数全体で有効な変数」ですが下記のコード①時点ではローカル変数が確保されているだけでvar命令は実行されていませんので、undefinedをかえします。
ローカル変数が関数全体で有効ならば、ローカル変数scopeの値が出力されそうなものですがそうではありません。
var scope='Global Variable'; function getValue(){ document.writeln(scope); //①この時点でvar命令は実行されていないため未定義undefinedを返す var scope='Local Variable'; return scope; } document.writeln(getValue()); //Local Variable document.writeln(scope); //Global Variable
ローカル変数は関数の先頭で宣言するよう心がけるのが好ましいようです。