【问题标题】:Is there a difference from these 2 functions? [duplicate]这两个功能有区别吗? [复制]
【发布时间】:2016-10-29 05:54:11
【问题描述】:

我下载了一个开源js代码,开发者经常用这种方式创建新函数:

var log = msg => div.innerHTML += "<br>" + msg;

那么,和下面这个有区别吗?

function log(msg){
   div.innerHTML += "<br>" + msg;
}

【问题讨论】:

标签: javascript


【解决方案1】:

箭头函数和function foo() {} 函数之间存在一些差异。见https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions

我能想到的几个:

  • function foo() {} 函数 定义 被提升,这意味着您可以在包含其定义的范围内的任何位置调用此类函数。对于包含函数的变量,情况并非如此,只有 声明 被提升
  • 箭头函数在词法上绑定this,简单来说就是它们没有引入自己的this变量。相反,它们只是从封闭范围中关闭最近的 this 变量
  • 箭头函数没有 arguments local variable 可在正文中使用

综上所述,考虑到上述注意事项,您展示的两个函数在大多数情况下的行为应该相同。

【讨论】:

    猜你喜欢
    • 2019-11-15
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    • 2016-05-08
    • 2012-03-21
    • 2011-01-14
    相关资源
    最近更新 更多