函数表达式和函数声明

Posted jrrrrr

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数表达式和函数声明相关的知识,希望对你有一定的参考价值。

函数声明和函数表达式咋眼一看这个名字以为没有什么区别,其实还是有很大区别的(特别是用法)

函数声明是这个样子的

 function fn(){
   //代码块
}
 fn(); //调用

 

函数表达式是这个样子的

//没有参数
var demo = function fn1(){
     //代码块
}
 demo(); //正确的调用
 fn1();  //错误的调用

//前后两个函数的名字可以相同,也可以不相同
//function后面的这个名字可以省略,并且只能在函数内部使用

//带参
var demo1 = function fn2(a,b){
  //代码块
}
demo(fn2(3,5))   //调用

 

既然知道了函数声明和函数表达式长什么样子了,那么来看看下面这一段代码

test1(); //100
demo1(); //demo1 is not a function
function test1(){
  console.log(100);
}
var demo1 = function test2(){
  console.log(50);
}

 

第一眼觉得这么简单啊 肯定输出100和50啊,但是看到旁边的答案就在想为什么是这个答案,其实函数声明和函数表达式有很重要的一点,那就是:

     函数声明有函数提升,会在预编译环节把声明和函数体整体提升到执行环境顶部,所以可以在函数声明之前调用这个函数(其实也就是函数可以在任意地方调用)

    而函数表达式的调用,只能在函数表达式之后

这两句话就解释了上面输出结果

 

以上是关于函数表达式和函数声明的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段8——声明函数

图解 Google V8 # 05:函数表达式的底层工作机制

inline内联函数

函数声明和函数表达式

函数声明和函数表达式的区别

函数表达式和函数声明