当前位置: 首页 > 知识库问答 >
问题:

将ECMAScript 6的箭头函数转换为常规函数[重复]

松元明
2023-03-14

我有如下箭头功能

if(rowCheckStatuses.reduce((a, b)=

rowcheckstatus是1和0的数组,此箭头函数将它们相加生成一个数字。此数字用作布尔值,以确定数组中是否至少有一个“1”。

问题是,我真的不明白箭头函数是如何工作的,我的IDE认为这是错误的语法,并拒绝检查我文档的其余部分是否有语法错误。

如何将其转换为常规函数以缓解这两个问题?


共有3个答案

陆翰藻
2023-03-14

用常规函数替换箭头函数通常没有问题:

var f = x => y;
var g = function(x) { return y; }

或者,在您的具体示例中:

rowCheckStatuses.reduce((a, b) => a + b, 0);
rowCheckStatuses.reduce(function(a, b) { return a + b; }, 0);

但是,要注意例外情况:

箭头函数不绑定此值。因此,在箭头函数中访问this可能会返回封闭执行上下文的this的值:

function MyClass() {}
MyClass.prototype.f = () => this;
MyClass.prototype.g = function() { return this; }

myClass = new MyClass();
console.log(myClass.f()); // logs `Window`
console.log(myClass.g()); // logs `myClass`

公西俊德
2023-03-14

您可以将其重构为:

if( rowCheckStatuses.reduce(function(a, b){return a + b}, 0)

初始累加器不是必需的(除非您期望数组有时是空的),它可以是:

if( rowCheckStatuses.reduce(function(a, b){return a + b})

这个数字充当布尔值来确定数组中是否至少有一个“1”

使用它可能更快(更清晰):

if( rowCheckStatuses.some(function(a){return a == 1}))

如果RowCheckStatus中有任何1,则返回true,并在遇到1时立即返回。另一种选择是indexOf:

if( rowCheckStatuses.indexOf(1) != -1)

有很多选择。

欧阳昊焱
2023-03-14

箭头函数通常可以通过替换

(<args>) => <body>

function(<args>) { return <body>; }

所以你的会是

rowCheckStatuses.reduce(function(a, b) { return a + b; }, 0)

这条规则也有例外,因此,如果您想了解所有差异,请仔细阅读箭头函数,这一点很重要。您还应该注意,箭头函数有一个词法this

 类似资料:
  • 本文向大家介绍JavaScript中的常规函数​​与箭头函数?,包括了JavaScript中的常规函数​​与箭头函数?的使用技巧和注意事项,需要的朋友参考一下 常规函数与箭头函数 一个箭头函数来简洁编写代码。常规 函数和箭头 函数的工作方式相似,但是它们之间存在一些差异。让我们简要地讨论一下这些差异。 箭头函数的语法 正则函数的语法 “ this”关键字的用法 它不能在箭头功能中使用“ this”

  • 不鼓励将箭头函数(“lambdas”)传递给 Mocha。Lambdas词法绑定 this,无法访问 Mocha 上下文。例如,以下代码将失败: describe('my suite', () => { it('my test', () => { // should set the timeout of this test to 1000 ms; instead will fail thi

  • ES6标准新增了一种新的函数:Arrow Function(箭头函数)。 为什么叫Arrow Function?因为它的定义用的就是一个箭头: x => x * x 上面的箭头函数相当于: function (x) { return x * x; } 在继续学习箭头函数之前,请测试你的浏览器是否支持ES6的Arrow Function: 'use strict'; ---- var f

  • 箭头函数: 正规函数 这两个结果应该是相同的,但是看起来像上面定义的arrowFunc考虑第一个arg列表,而normalFunc考虑第二组arg列表。

  • 新的“胖箭头”符号还可以用更简单的方式来定义匿名函数。 请看下面的例子: console.log(x); incrementedItems.push(x+1); }); 计算一个表达式并返回值的函数可以被定义更简单: 下面代码与上面几乎等价: incrementedItems = items.map(function (x) { return x+1; 让我们在 验

  • 本文向大家介绍ECMAScript6的新特性箭头函数(Arrow Function)详细介绍,包括了ECMAScript6的新特性箭头函数(Arrow Function)详细介绍的使用技巧和注意事项,需要的朋友参考一下 箭头函数是ECMAScript 6最受关注的更新内容之一。它引入了一种用「箭头」(=>)来定义函数的新语法,它…它碉堡了~。箭头函数与传统的JavaScript函数主要区别在于以下