函数表达式和函数声明
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啊,但是看到旁边的答案就在想为什么是这个答案,其实函数声明和函数表达式有很重要的一点,那就是:
函数声明有函数提升,会在预编译环节把声明和函数体整体提升到执行环境顶部,所以可以在函数声明之前调用这个函数(其实也就是函数可以在任意地方调用)
而函数表达式的调用,只能在函数表达式之后
这两句话就解释了上面输出结果
以上是关于函数表达式和函数声明的主要内容,如果未能解决你的问题,请参考以下文章