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 });