既然知道了函数表达式和函数声明,那么如何区分他们?

如果没有函数名称,那么肯定不是函数声明方式。 区分带有函数名称的代码是函数声明还是函数表达式要通过它所在的上下文来判断: 如果代码作为一个运算数存在,那么它就是一个表达式方式,否则就是函数声明方式。

先看看他们之间的区别:

1、函数声明会被提升到当前作用域的顶部,函数表达式则不会。

2、函数声明一定会有函数名,而函数表达式一般不会有函数名。

3、函数声明不是一个完整的语句,所以不能出现在if-else,for循环,finally,try catch语句以及with语句中。 (ECMA规范只允许他们作为顶级语句,但是有的浏览器并不遵循这个规则。)

直接看demo

语法: return[()[expression][]]; 可选项 expression 参数是要从函数返回的值。如果省略,则该函数不返回值。 用 return 语句来终止一个函数的执行,并返回 expression 的值。如果 expression 被省略, 或在函数内没有 return 语句被执行,则把值 undefined 赋给调用当前函数的表达式。