函数表达式和函数声明之间有什么区别

53 阅读1分钟

看下面的代码

hoistedFunc();
notHoistedFunc();
 
function hoistedFunc(){
  console.log("我会被提升");
}
 
var notHoistedFunc = function(){
  console.log("我没有被提升");
}

输出 :

image.png

notHoistedFunc 调用会抛出异常,因为它是个函数表达式,没有被提升
而 hoistedFunc不会抛出异常,因为 hoistedFunc 会被提升到作用域的顶部,即被提升了