其他分享
首页 > 其他分享> > js中预解析的问题

js中预解析的问题

作者:互联网

js中,代码的位置会对结果有一定影响。
js代码是由浏览器中的js解析器来执行的,js解析器在运行js代码时分为两步:预解析+代码执行。

预解析:js引擎把js里面所有var和function提升到当前作用域的最前面。
变量提升(var)只提升声明,不提升赋值操作
函数提升(function)把所有函数声明提升,不提升函数的调用。

**代码执行:**按照代码书写的顺序从上往下执行。

一个例子:

f1()
console.log (c ) ;
console.log (b ) ;
console.log (a ) ;
function f1(){
var a=b=c=9;
//相当于var a=9;b=9;c=9;b和c没有var,当做全局变量
//要想集体声明应该:var a=9,b=9,c=9;
console.log (a ) ;
console.log (b ) ;
console.log (c ) ;
}

//以上代码预解析后的顺序应该是``
function f(){
var a;
a=b=c=9;
console.log (a ) ;//9
console.log (b ) ;//9
console.log (c ) ;//9
}//提升函数声明,
f1()
console.log (c ) ;//输出9,因为c全局变量
console.log (b ) ;//输出9,因为b全局变量
console.log (a ) ;//undifined

标签:function,中预,console,log,js,提升,var,解析
来源: https://blog.csdn.net/chusanxiao/article/details/114853859