繁体   English   中英

为什么Array#map不返回正确的数组?

[英]Why doesn't Array#map return the correct array?

当我写这样的东西:

var x = [1,2,3].map(x => { a : 'hello' });

我希望收到类似[{a:'hello'},{a:'hello'},{a:'hello'}] ,但它将返回undefined s的列表。 为什么是这样?

在此处输入图片说明

由于箭头功能具有多种可接受的语法,因此将“对象”视为一个块 它们包括一个包含多个语句的块:

param1 => { statements }
(param1, param2, …, paramN) => { statements }

实际上,您当前的代码被解释为带有标签和字符串表达式的块,而不是对象文字。 因此,您的回调不返回任何内容,并且您的数组成为undefined的数组。

将其包装在括号中,使其成为一个表达式并解释为对象文字(因为块不是表达式,它们是语句,并且分组内的代码必须是表达式):

var x = [1,2,3].map(x => ({ a : 'hello' }));

您需要在对象周围加上一些括号,否则会得到带有labelblock语句

为了防止箭头函数中的block语句,您需要使用分组运算符来获取表达式作为返回值。

 var x = [1, 2, 3].map(x => ({ a: 'hello' })); console.log(x); 

您需要将返回的对象放在括号中:

var x = [1,2,3].map(x => ({ a : 'hello' }));

否则,花括号中的代码将被视为函数的主体。

var x = [1,2,3].map(x => ({ a : 'hello' }));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM