// js中的预解析:在js代码运行之前,优先进行代码解析,
// 解析完之后,代码才开始执行(从上到下)
// 1.变量声明 var a;
// 2.函数的声明 function fn() {}
//一般函数
console.log(fun); //-->function fun() { return true;}
console.log(fun()); //-->true
function fun() {
return true;
}
//匿名函数
console.log(fun1); //--> undefined 进行预解析了,相当于 var fun1;
// console.log(fun1()); //--> 报错了
var fun1 = function () {
return false;
};
//自执行函数
(function () {
console.log(fun1());
//->false fun1在这个函数母体内(预编译前置)后返回false
var fun1 = function(){
return false;
}
console.log(fun1()); //->false
})();
函数和变量重名的话,后面的会覆盖前面的重名。
var fun = function(){
return false
}
fun = '字符串'
console.log(fun) // -> 返回字符串
预解析时先处理变量声明,再处理函数声明
function test(){}
var test;
console.log(test);// -> test函数体