代码实例:
console.log(data1) //undefined var data1=12; fn1(); //execute function fn1 function fn1(){ console.log("execute function fn1") } fn2(); //fn2 is not a function var fn2=function () { console.log("execute function fn2") }
1.js引擎运行js分为两步:预解析 代码执行
(1) 预解析 js引擎会把里面所有的var还有function提升到当前作用域的最前面 不提升赋值操作与不调用函数
(2) 代码执行 按照代码书写的顺序从上往下执行
2.预解析分为变量预解析(变量提升)和函数预解析(函数提升)
(1) 变量提升就是吧所有的变量声明提升到当前的作用域的最前面 不提升赋值操作
(2) 函数提升 就是把所有的函数声明提升到当前的作用域的最前面 不调用函数
标签:function,fn2,fn1,作用域,javaScript,提升,解析 From: https://www.cnblogs.com/ErenYeager/p/17096773.html