js预解析

这一生的挚爱 提交于 2019-12-05 11:08:32

 

上面这段代码中,函数声明在函数调用下,为什么会调用成功呢?

hello();

function hello(){alert("hello");}

 

因为js在编译阶段预解析,将上面这段代码转换成:

var hello = function(){alert('hello');};

hello();

 

只有函数声明才会被提升,函数表达式在预解析阶段不会被提升。

 

再看一个案例:

var a=1;

function hello(){

    console.info(a);

    var a=2;

}

 

执行结果为什么是undefined呢?

因为在预解析阶段,代码被转换成下面:

var a=1;

function hello(){

    var a;

    console.info(a);

    a=2;

}

所以执行结果是undefined

 

这就是为什么js函数中变量声明建议写在最前面:

function hello(){

  var a=1,b=2;

  console.info(a);

}

 

 

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