Javascript 无法在对象数据中使用三元运算符

Javascript 无法在对象数据中使用三元运算符,javascript,Javascript,我正在为我的web应用程序使用JavaScript和jQuery。在一个例子中,我使用了三元运算符,以便在分配对象值时优化代码 我已经手动将d值设置为true进行测试。但此值将根据我的应用程序中客户给定的数据而有所不同 d=true; var args = { d ? { target:"div"} : {main:"body"}, status:"enabled", updated:"yes" }; 但这不起作用,并引发脚本错误。您能否建议如何以优化的方式更新对象数据。这是不正确的JavaS

我正在为我的web应用程序使用JavaScript和jQuery。在一个例子中,我使用了三元运算符,以便在分配对象值时优化代码

我已经手动将d值设置为true进行测试。但此值将根据我的应用程序中客户给定的数据而有所不同

d=true;
var args = { d ? { target:"div"} : {main:"body"}, status:"enabled", updated:"yes" };

但这不起作用,并引发脚本错误。您能否建议如何以优化的方式更新对象数据。

这是不正确的JavaScript语法,您不能用这种方式动态定义对象的属性。您可以这样做:

var args = {status:"enabled", updated:"yes"};
d ? (args.target = "div") : (args.main = "body");
在ES2015中,您可以执行以下操作:

var args = {[d ? "target" : "main"]: d ? "div" : "body", status:"enabled", updated:"yes"};

这是不正确的JavaScript语法,您不能用这种方式动态定义对象的属性。您可以这样做:

var args = {status:"enabled", updated:"yes"};
d ? (args.target = "div") : (args.main = "body");
在ES2015中,您可以执行以下操作:

var args = {[d ? "target" : "main"]: d ? "div" : "body", status:"enabled", updated:"yes"};

不能以这种方式在对象中使用此运算符。此外,数据结构不正确。它将导致以下对象:

{ { target:"whatever"} , status:"enabled", updated:"yes" };
这在语法上是不正确的

考虑这样写:

var args = {status:"enabled", updated:"yes" };
if(d){
    args.target = 'div';
} else {
    args.main = 'body';
}

不能以这种方式在对象中使用此运算符。此外,数据结构不正确。它将导致以下对象:

{ { target:"whatever"} , status:"enabled", updated:"yes" };
这在语法上是不正确的

考虑这样写:

var args = {status:"enabled", updated:"yes" };
if(d){
    args.target = 'div';
} else {
    args.main = 'body';
}

有一具尸体不应该在那里,我已经把它移走了。它仅在更新此处的查询时插入。如果要在需要key:value的位置插入对象,则需要插入对象的键。我需要args:object{target:div,status:enabled,updated:yes,type:click,model:object…}我的2美分:减少行数并不总能使程序运行更快和/或提高可维护性。此外,三元运算符的速度不如严格比较快:。问问自己什么才是真正重要的;有一具尸体不应该在那里,我已经把它移走了。它仅在更新此处的查询时插入。如果要在需要key:value的位置插入对象,则需要插入对象的键。我需要args:object{target:div,status:enabled,updated:yes,type:click,model:object…}我的2美分:减少行数并不总能使程序运行更快和/或提高可维护性。此外,三元运算符的速度不如严格比较快:。问问自己什么才是真正重要的;我已经只有这个选择了。但是现在我必须优化代码,因为我没有更多这样的参数。所以只有我在寻找这个你的第二个选择太棒了。这就是我所期待的,谢谢你,我已经只有这个选择了。但是现在我必须优化代码,因为我没有更多这样的参数。所以只有我在寻找这个你的第二个选择太棒了。这就是我期待的,谢谢你