js预解析
浏览器执行js过程包含:预解析 代码执行
预解析:会把 var 和 function 提到当前作用域的最前面
console.log(a); //输出a = undefined
var a = 10;
fun();
function fun() {
var a = 1;
console.log(a); //输出a=1
}
fun();
var fun = function () {
var a = 99;
console.log(a); //fun is not a function
}
预解析过程如下:
var a;
console.log(a); //所以a = undefined,预解析只是把a的声明提到前面并不赋值
a = 10;
function fun() {
var a = 1;
console.log(a);
}
fun(); //会把整个函数提到前面,然后再执行
var fun;
fun(); //在这里执行代码,就找不到function()
fun = function() {
...........
}