为什么函数参数在传入时不成为键值?

时间:2018-04-06 03:49:29

标签: javascript parameters

在下面的测试函数中,我传入2个值并返回一个简单的对象。由于某种原因,'cat'不用作键值,而是使用占位符x。我确信这种行为有一个明显的解释,但我看不出它是什么。也许我的大脑太困了。谢谢你的帮助!

"use strict";

let functionTest = function(x, y) {
   return console.log({x: y});
} 

functionTest('cat', 153);

我尝试了箭头功能,结果是一样的。

"use strict";

let functionTest = (x, y) => console.log({x: y});

functionTest('cat', 153);

2 个答案:

答案 0 :(得分:2)

使用[X],这是ES6语法



"use strict";

let functionTest = function(x, y) {
   return console.log({[x]: y});
} 

functionTest('cat', 153);




答案 1 :(得分:2)

您必须使用[]

包装值
  

从ECMAScript 2015开始,也是对象初始化器语法   支持计算属性名称。这允许你放一个表达式   在方括号[]中,将被计算并用作属性名称。   这让人联想到属性访问者的括号表示法   语法,您可能已经习惯于读取和设置属性。   现在,您也可以在对象文字中使用类似的语法:



"use strict";

let functionTest = function(x, y) {
   return console.log({[x]: y});
} 

functionTest('cat', 153);




Doc:Computed property names