javaScript變量提升?

鏈接:https://zhuanlan.zhihu.com/p/22606894

var bar=1;
function test(){
  console.log(bar);     //undeifned
  var bar=2; 
  console.log(bar);  //2
}
test();

爲什麼在test函數中會出現上述結果呢,這就是JavaScript的變量提升了,雖然變量bar的定義在後面,不過瀏覽器在解析的時候,會把變量的定義放到最前面,上面的test函數相當於

function test(){
  var bar;
  console.log(bar);   //undefined
  bar=2; 
  console.log(bar);   //2
}

再看

var foo=function(){  console.log(1); }
function foo(){  console.log(2); }
foo();  //結果爲1

同樣的,函數的定義也會到提升到最前面,上面的代碼相當於

function foo(){  console.log(2); }
var foo;
foo=funciton(){ console.log(1); }
foo();   //1

這裏爲什麼不是下面的理解方式呢?

var foo;
function foo(){ console.log(2);}
foo=function(){ console.log(1);}
foo();//1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章