今天写代码,无意间发现了函数声明和函数表达式居然是有区别的,而且还是很大的区别。
函数声明:
function fun(){
return 100;
}
直接用function的就是函数声明。
函数表达式:
var fun = function(){
return 100;
};
用变量声明函数的就是函数表达式。
百度之后才发现,解析器会优先读取函数声明,并且让函数能在任何代码之前就可以调用,
而函数表达式,必须在解析器执行到了代码这行,才开始解析。
比如:
console.log(fun());
var fun = function(){
return 100;
};
这样写,直接报 fun is not a function
也可以能是 unexpected identifier
就是因为解析器还没解析到函数表达式,先调用就会出现这种bug ,吃一堑长一智
以后要记得这种隐形的bug