我正在为我的Web应用程序使用JavaScript和jQuery。在一种情况下,我使用三元运算符来分配对象值时优化代码。
我已手动将d
值设置为true以进行测试。但是这个值会根据我的应用程序中的客户给定数据而变化。
d=true;
var args = { d ? { target:"div"} : {main:"body"}, status:"enabled", updated:"yes" };
但这不起作用并抛出脚本错误。您能否建议如何以优化的方式更新对象数据。
答案 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" };