2016-05-24 4 views
1

これは私の唯一のJavaScriptコードです。JavaScriptレキシカルスコープに関する予期しない出力

(function(){ 
    var name = "Joby"; 
    console.log(name); 
})(); 
console.log(name); 

機能ブロック内のconsole.logは、期待どおりに "Joby"を印刷しています。

外部コンソールがコンソールに印刷されています。私は、外部コンソールのステートメントの "参照エラー"を期待しています。それはなぜそれのようなものですか?

私はGoogle Chromeブラウザを使用しています。同じ出力がfirefoxに表示されます。

答えて

6

namename(global variable)変数がIIFEのうち呼ば、windowオブジェクトのkey/propertyある取得/ window

(function() { 
 
    var name = "Joby"; 
 
    console.log(name); 
 
})(); 
 
console.log(name); 
 

 
console.log('---With some other variable name---'); 
 

 
(function() { 
 
    var name1 = "Joby"; 
 
    console.log(name1); 
 
})(); 
 
console.log(name1);//you can find `ReferenceError` here!
の名前を設定し、 window

Window.namenameを指し

+0

ありがとうございます。それは私の新しい情報です。私は答えとしてこれを受け入れるために10分待つ必要があります:) –

+0

@ジョビージョセフ、私はそれが助けてうれしい! _Happy Coding_ – Rayon