在JS中建立函数的方式有不少种,本文主要讲解函数声明(function declaration)和函数表达式(function expression)两种方式建立函数的区别.express
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;
而对于函数code
console.log(a()); function a() { console.log('lol'); } console.log(a()); // lol lol;
从上面能够看出,虽然变量和函数都被Hoisting,可是处理的方式倒是不一样的,把这个处理方式应用到上面两种函数声明上面,第一种被看过函数,第二种被看做变量,那区别就很显然了:第二种函数的声明必须在函数调用的前面,第一个则无需这样。咱们再来看最后一个例子:io
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
帮到你了吗?console