这两个JavaScript表达式之间的区别是什么?

这两个JavaScript表达式之间的区别是什么?,javascript,Javascript,我使用JavaScript的filter方法删除重复条目,并使用以下语法: var dataArray = ['g','o','o','g','l','e'] dataArray.filter((value, index) => dataArray.indexOf(value) === index) 上面的代码工作正常,通过删除重复值返回数组。但是,当我在arrow函数之后添加一个{花括号时,它返回一个空数组 var dataArray = ['g','o','o','g','l','e

我使用JavaScript的filter方法删除重复条目,并使用以下语法:

var dataArray = ['g','o','o','g','l','e']
dataArray.filter((value, index) => dataArray.indexOf(value) === index)
上面的代码工作正常,通过删除重复值返回数组。但是,当我在arrow函数之后添加一个{花括号时,它返回一个空数组

var dataArray = ['g','o','o','g','l','e']
dataArray.filter((value, index) => { dataArray.indexOf(value) === index })

我无法找出这两种语法之间的实际区别,以及第二种语法返回空数组的原因。

如果使用大括号,则必须指定return关键字:

var dataArray = ['g','o','o','g','l','e']
dataArray.filter((value, index) => { dataArray.indexOf(value) === index })
var dataArray=['g','o','o','g','l','e']
dataArray=dataArray.filter((值,索引)=>{return dataArray.indexOf(值)==index});

console.log(dataArray);
第一个是表达式,第二个是块。
{}
不仅仅用于化妆品。您需要一个带花括号的返回语句。请尝试记录调用
dataArray.filter(…)的结果
了解差异。第二个代码示例不会像您预期的那样工作。您可以尝试阅读mdn文档中的比较:如副本中所示。。。