JavaScript的變量提升

變量提升

  • demo
var v = "hello world";
  (function (){
    console.log(v);
    var v = "hi";
})()  //undefined
//相當于
var v = "hello world";
  (function (){
    var v;
    console.log(v);
    v = "hi";
})()

var的變量提升只是定義提升至最前,變量的賦值不會提升

創建函數的有兩種方式

  • 函數聲明function f(){}
function test(){
    foo();
    function foo(){
      console.log("hello");
    } 
}
test();   //"hello"
  • 定義一個變量var f = function (){}
function test(){
    foo();
    var foo = function foo(){
      console.log("hello");
    }
}
test(); // foo is not a function
//相當于
function test(){
    var foo;
    foo();
    foo = function foo(){
      console.log("hello");
    }
}
test(); 
  • 函數本身也是一種變量,所以也存在提升,函數聲明的方式是提升了整個函數,所以可以正確執行,定義變量的方式,并沒有提升整個函數,所以會報錯

參考文章推薦
Javascript作用域和變量提升

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 前端07班 王語句JavaScript程序的執行單位為行(line),也就是一行一行地執行。一般情況下,每一行就是...
    ea203453e188閱讀 914評論 0 4
  • Node.js是目前非常火熱的技術,但是它的誕生經歷卻很奇特。 眾所周知,在Netscape設計出JavaScri...
    w_zhuan閱讀 3,642評論 2 41
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • 夲圣閱讀 241評論 0 1
  • 昨天剛在《暴走看啥片兒》中看到紙巾老師給《東方列車謀殺案》的期待值打了三個星(滿星5顆星),今天休息正好來看看到底...
    過者不過閱讀 317評論 0 0