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