JavaScript不是捡的功能
我在一个函数传递的变量没有被拾起传递的变量,看foollowing例如:JavaScript不是捡的功能
<html>
<head>
</head>
<body>
</body>
<script>
function sample (item, value){
var object = {
item: value
}
console.log(object);
}
sample("one", false);
</script>
</html>
这将输出:
{ item: "false" }
,而不是:
{ "one": "false" }
为什么item
未被选为输入?
JavaScript对象定义以这种方式工作。解释器假定item
是一个字符串,而不是一个变量。您应该这样做:
function sample(item, value){
var obj = {};
obj[item] = value;
return obj;
}
在[支持的浏览器/引擎](https: //kangax.github.io/compat-table/es6/#test-object_literal_extensions),现在可以是'return {[item]:value};'。 –
'{\'$ {item} \':value}'会更有意义tbh – JCOC611
也许吧。从ES6开始,这是无效的语法(仍然需要围绕模板字符串的括号)。可能值得在[es-discuss]上提出建议(https://mail.mozilla.org/listinfo/es-discuss)。 –
“为什么”是因为对象文字/初始化程序不将键/属性解析为*表达式* s。当你提供一个标识符时,标识符本身的名称就是所使用的。这意味着通过允许在许多情况下关键字的引用是可选的方便。 - 虽然正如我在另一条评论中提到的那样,在关键字周围放置括号是一种新的语法选项,它将决定* Expression *的关键字,允许您使用变量等。 –