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

时间:2016-08-05 10:37:19

标签: javascript

我正在为我的Web应用程序使用JavaScript和jQuery。在一种情况下,我使用三元运算符来分配对象值时优化代码。

我已手动将d值设置为true以进行测试。但是这个值会根据我的应用程序中的客户给定数据而变化。

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

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

2 个答案:

答案 0 :(得分:6)

这是不正确的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"};

答案 1 :(得分:3)

您不能以这种方式在对象中使用此运算符。而且,数据结构不正确。这将产生以下对象:

app.directive('example', function () {

    return {
        restrict: 'E',
        template: '<p ng-show=\"showMe\">Text to show</p><button ng-click=\"clickMe()\">Click me</button>',

        link: function(scope) {
            scope.clickMe = function() {
                scope.showMe = !scope.showMe;
            };
        }
    };
});

这在语法上是不正确的。

考虑写下这样的东西:

{ { target:"whatever"} , status:"enabled", updated:"yes" };