1. js引擎运行js分两步:预解析,代码执行
(1)预解析:js引擎把js里所有的var和function提升到当前作用域的最前面
(2)代码执行:按照代码书写顺序进行执行
2. 预解析分为:变量预解析(变量提升)和函数预解析(函数提升)
(1)变量提升,把所有变量声明提升到作用域最前面,但是不提升赋值操作
(2)函数提升,就是把所有函数声明提升到当前作用域的最前面,不调用函数
如:
fun()
var fun = function(){
console.log(00)
}//出错
//相当于执行了
var fun
fun()
fun = function(){
console.log(00)
}
一个执行例子
function f1(){
var a=b=c=10; //相当于是var a=10;b=10;c=10 bc是全局变量
console.log(a)
console.log(b)
console.log(c)
}
f1()
console.log(c)
console.log(b)
console.log(a)
结果: