在JS中建立函数的体式格局有很多种,本文重要解说函数声明(function declaration)和函数表达式(function expression)两种体式格局建立函数的区分.
function add1(a, b) {
return a + b;
} // function declaration
var add2 = function(a, b) {
return a+b;
}; // function expression
上面是这两种要领建立函数的花样
他俩的区分重要在看待JS看待这两种体式格局的处置惩罚体式格局上,前者看做函数,后者为变量。JS在实行代码的时刻,会有一个叫做Hoisting的操纵,Hoisting的效果,把对那些变量和函数举行预处置惩罚,把他们放在前面了,而变量只放过去变量名,函数却都被放过去了。比方我们看下面代码来明白一下。
console.log(a);
var a = '1';
console.log(a); // undefined 1;
而关于函数
console.log(a());
function a() {
console.log('lol');
}
console.log(a()); // lol lol;
从上面能够看出,虽然变量和函数都被Hoisting,然则处置惩罚的体式格局倒是差别的,把这个处置惩罚体式格局应用到上面两种函数声明上面,第一种被看过函数,第二种被看做变量,那区分就很明显了:第二种函数的声明必须在函数挪用的前面,第一个则无需如许。我们再来看末了一个例子:
var result1 = add1(1, 1);
function add1(n1, n2) {
return n1 + n2;
}
var result2 = add2(1,1)
var add2 = function(n1, n2) {
return n1 + n2;
};
result1 // 2
result2 // undefined
帮到你了吗?