Show you the code
foo()
var foo = function(){
console.log("函数定义")
}
//Uncaught TypeError: foo is not a function
foo()
function foo(){
console.log("函数声明")
}
//"函数声明"
解释一下报错的原因,拆解过程如下:
function(){
console.log("函数定义")
}
var foo;
foo()
foo = function(){
console.log("函数定义")
}
而正确调用的原因,拆解过程如下:
function foo(){
console.log("函数声明")
}
foo()
根本原因是变量声明和函数声明都存在提升(hositing)的原因。
但是最好的命名函数方式是将二者结合:
const foo = function whyDeclarationAndExpressionIsGood(){
console.log("函数声明和表达式结合")
}
foo()
原文链接:https://www.f2er.com/js/417909.html