欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaScript的变量提升

程序员文章站 2022-04-04 22:52:26
...

变量提升

  • 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作用域和变量提升