JS顶用函数声明和函数表达式两种体式格局建立函数的区分

在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

帮到你了吗?

    原文作者:Mystery_Wen
    原文地址: https://segmentfault.com/a/1190000010361205
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞