我想在同一行/语句中设置一个选项,并且键和值都在同一行:
以下是多行处理的方法:
var options = {}
, key = "foo", value = "bar"
;
options[key] = value;
myFunction( options ); // object is { "foo" : "bar" }
这是我想做的:
myFunction({key:value}); // object is { "key" : "bar" }
哪个行不通。有没有一种方法可以做到这一点?
最佳答案
当然:
myFunction((obj = {}, obj[key] = value, obj));
这是在这里工作的comma operator。它从左到右评估每个表达式,并返回最后一个表达式的值。请注意,该表达式位于括号
(...)
内,否则逗号将被解释为参数分隔符。缺点是
obj
是全局的,因此总体上可读性较差。基本上,从技术上讲,这是可能的,但您不应该这样做。多行执行此操作没有错,也没有办法使用对象文字和设置动态键。