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