这两个功能有区别吗?

时间:2016-10-29 05:54:11

标签: javascript

我已经下载了一个开源的js代码,开发人员经常以这种方式创建新的函数:

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

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

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

1 个答案:

答案 0 :(得分:0)

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

我可以想到一些问题:

  • function foo() {}函数 definitions 被挂起,这意味着您可以在包含其定义的作用域中的任何位置调用此类函数。包含函数的变量不是这种情况,只有声明被提升
  • 箭头函数以词法方式绑定this,简单来说就意味着它们不会引入自己的this变量。相反,它们只是关闭来自封闭范围的最近的this变量
  • 箭头功能没有arguments local variable可在正文中使用

所有这一切,考虑到上面提到的警告,你所展示的两个功能在大多数情况下应该表现相同。