JavaScriptのスコープの話
mattnさんがすでにコメントしているけどコードで書くともっとわかりやすいと思ったので。
最初のコードの変数scopeは関数外で宣言されてるからundefinedなのはわかるけど、後のコードは関数外のグローバル変数見に行ってもいいの?
401 Authorization Required
っていうところなんだけど、この最初のコードの1番目のalertで参照されているのは関数スコープ変数。
コードに直してみるとこんな感じ
var scope = "global"; function f() { var scope; // 関数内スコープ変数scopeが定義される alert(scope); // 関数内スコープ変数が参照されるため、もちろん未定義値(undefined)が返される scope = "local"; // 関数内スコープ変数scopeに"local"をセット alert(scope); // local } f();
という風に解釈されていると考えると理解もしやすいかも。