js的变量提升问题

邮差的信 提交于 2020-02-21 01:50:37

执行结果:

为什么第一个不输出全局变量呢?

我们先了解下变量提升,指的是变量声明总是会被解释器“提升”到函数体的顶部,这意味着,我们的var scope="局部”,但解释器会提升该scope变量——将该变量的声明提升到函数体的顶部。

注意:变量提升只是提升变量声明部分,并不会提升变量赋值部分。

上面的代码可以转换为:

function test(){

  var scope ;

  document.writeln(scope+"<br/>");

  scope = "局部";

  document.writeln(scope+"<hr/>");

}

这样的话就在test()函数里面,先声明了scope变量,但是第一次打印时还没有赋值,故为undefined

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!