函数声明和函数表达式是大学计算机类专业会学到的知识。首先,函数声明和函数表达式的定义不同,另外,二者的主要区别在于是否有函数名,是否会被提到当前作用域的顶部。
1、函数声明会被提升到当前作用域的顶部,函数表达式则不会。
2、函数声明一定会有函数名,而函数表达式一般不会有函数名。
3、函数声明不是一个完整的语句,所以不能出现在if-else,for循环,finally,try catch语句以及with语句中,(ECMA规范只允许他们作为顶级语句,但是有的浏览器并不遵循这个规则。)
“函数定义”是指对函数功能的确立,包括指定函数名,函数值类型、形参类型、函数体等,它是一个完整的、独立的函数单位。而“函数声明”的作用则是把函数的名字、函数类型以及形参类型、个数和顺序通知编译系统,以便在调用该函数时系统按此进行对照检查(例如函数名是否正确,实参与形参的类型和个数是否一致)。
在书写形式上,函数声明可以把函数头部复制过来,在后面加一个分号;而且在参数表中可以只写各个参数的类型名,而不必写参数名。
函数表达式就是用一个具体的代数式子,表示一个函数所要执行的具体的运算,它清楚地描述了一个函数要完成什么样的运算。例如初等函数:二次函数f(x)=a*x*x+b*x+c,三角函数sin(x),cos(x),等等幂函数、指数函数、对数函数、三角函数、反三角函数与常数经过有限次的有理运算(加、减、乘、除、有理数次乘方、有理数次开方)及有限次函数复合所产生、并且能用一个解析式表示的函数。“用一个解析式表示”是关键高等函数不能用一个解析式表示,但也是由初等函数复合而来的。