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

帮到你了吗?

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值