iul*_*net 0 javascript arrays ecmascript-6
当我写这样的东西时:
var x = [1,2,3].map(x => { a : 'hello' });
Run Code Online (Sandbox Code Playgroud)
我希望得到类似的东西[{a:'hello'},{a:'hello'},{a:'hello'}],但它会返回一个undefineds 列表.为什么是这样?
"对象"被视为一个块,因为箭头函数具有多个可接受的语法.它们包含一个包含多个语句的块:
param1 => { statements }
(param1, param2, …, paramN) => { statements }
Run Code Online (Sandbox Code Playgroud)
实际上,您当前的代码被解释为带有标签和字符串表达式的块,而不是对象文字.因此,您的回调不会返回任何内容,您的数组将成为undefineds 的数组.
将其包装在括号中,使其成为表达式并解释为对象文字(因为块不是表达式,它们是语句,分组内的代码必须是表达式):
var x = [1,2,3].map(x => ({ a : 'hello' }));
Run Code Online (Sandbox Code Playgroud)