JavaScript 中 箭头函数(Arrow Function)的语法差异.

bug重现

在项目调试的时候,发现javascript在过滤数组的时候,发现竟然为空数组。

var ages = [32, 33, 16, 40]; //想要获取除了第二个元素外的所有元素
//第一种写法:
var a = ages.filter((_, index) => index !== 1);

//第二种写法:
var a = ages.filter((_, index) => { index !== 1 });

这两种写法,就因为有一个{}导致结果完全不一样,第一种写法能够返回预想中的效果。

第二种写法就会返回一个空的数组。

原因

  • 第一种写法,没有{},那么他就不是一个代码块,等于直接返回 index !== 1 的元素。
  • 第二种写法,因为有{},那么就是一个代码块,而我们没有给return,那么就返回一个undefined。

修改:

如果我们硬性要求添加{},那么我们就应该添加一个return

var a = ages.filter((_, index) => { return index !== 1 });

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注