大家好,我是IT修真院成都分院第8期的学员,一枚正直纯洁善良的WEB前端程序员。今天给大家分享一下js中函数表达式和函数声明的区别。
一、什么是FUNCTION EXPRESSION(函数表达式)?
Function Expression 将函数定义为表达式语句(通常是变量赋值)的一部分。通过 Function Expression 定义的函数可以是命名的,也可以是匿名的。Function Expression 不能以“function”开头。
EZ:使用function关键字声明一个函数,但未给函数命名,最后将匿名函数赋予一个变量,叫函数表达式
// 函数声明
function funDeclaration(type){
return type==="Declaration";
}
// 函数表达式
var funExpression = function(type){
return type==="Expression";
}
二、两者具体有哪些区别呢?
(一)函数声明中函数名是必须的;函数表达式中则是可选的
//函数声明
function sum(a, b) {
return a + b;
}
alert(sum(1, 2));
//函数表达式
var s = function sum(a, b) {
return a + b;
}
alert(s(1, 2));
var s = function(a, b) {
return a + b;
}
alert(s(1, 2));
//以上两种都可以
(二)、用函数声明定义的函数,函数可以在函数声明之前调用,而用函数表达式定义的函数只能在声明之后调用。
//函数声明
alert(sum(1, 2));//3
function sum(a, b) {
return a + b;
}
//函数表达式:发生错误
try {
alert(s(1, 2));
var s = function sum(a, b) {
return a + b;
}
}
catch (e) {
alert("wrong!");
}