预解析
console.log(num) //报错undefined
var num = 10
//相当于执行以下代码
var num;
console.log(num)
num = 10
//使用自定义函数创建函数时候
function fn(){
console.log('1')
}
fn(); //console.log = '1'
fn(); //console.log = '1'
function fn(){
console.log('1')
}
//使用函数表达式的方法创建函数
var fun = function(){
console.log('1');
}
fun(); //console.log = '1'
//使用函数表达式的方法创建函数
fun(); //console.log = fun is not a function
var fun = function(){
console.log('1');
}
//相当于执行以下代码
var fun;
fun();
fun = function(){
console.log('1');
}
我们js引擎运行js分为两步:预解析 代码执行
1.预解析:js引擎会把js里面所有的var 还有function提升到当前作用域的最前面 不提升赋值(不调用函数)
(1):变量提升和函数提升
2.预解析之后才是代码执行,按照代码书写的顺序从上往下执行
版权声明:本文为pauline_原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。