我在下面有一个传统的条件语句,我想知道我是否可以将其转换为内联条件(三元?)语句。
var type;
if type === 1 {
$('#form1').append(new mySuperObject({ model: myModelB}).render().$el);
} else {
$('#form1').append(new mySuperObject({ model: new myModelA({ type: myType.Gas }) }).render().$el);
}
这是正确的格式吗?
$('#form1').append(new mySuperObject({ model: ((type === 1) ? myModelB : new myModelA({ type: myType.Gas) }) }).render().$el);
当我尝试时,我在Firebug控制台中收到以下错误:
TypeError: this.model.get(...) is undefined
由于
答案 0 :(得分:4)
我认为你的括号不合适。比较下面的两行。第一个是原始的。
$('#form1').append(new mySuperObject({ model: ((type === 1) ? myModelB : new myModelA({ type: myType.Gas) }) }).render().$el);
$('#form1').append(new mySuperObject({ model: ((type === 1) ? myModelB : new myModelA({ type: myType.Gas })) }).render().$el);
为了便于阅读,你可以选择:
var model = (type === 1) ? myModelB : new myModelA({ type: myType.Gas });
$('#form1').append(new mySuperObject({ model: model }).render().$el);
答案 1 :(得分:1)
你有一些语法错误..
为了便于阅读,您可以使用
var objToUse = (type === 1) ? myModelB : new myModelA({ type: myType.Gas});
$('#form1').append(new mySuperObject({ model: objToUse }).render().$el);
答案 2 :(得分:1)
不要把所有这些东西都塞进去。为避免重复代码,您可以执行以下操作:
var type;
var model;
if(type === 1) {
model = myModelB;
} else {
model = new myModelA({ type: myType.Gas });
}
$('#form1').append(new mySuperObject({ "model": model}).render().$el);
答案 3 :(得分:1)
以下内容:
if (type === 1) {
$('#form1').append(new mySuperObject({ model: myModelB}).render().$el);
} else {
$('#form1').append(new mySuperObject({ model: new myModelA({ type: myType.Gas }) }).render().$el);
}
与:
相同 var model;
if (type === 1) {
model = myModelB;
}
else {
model = new myModelA({type: myType.Gas});
}
$("#form1").append(new mySuperObject({model: model})).render().$el;
与以下内容相同:
var model = (type === 1)
? myModelB
: new myModelA({type: myType.Gas});
$("#form1").append(new mySuperObject({model: model})).render().$el;
如果你真的想要,你可以将它们塞进去:
$("#form1").append(new mySuperObject({model: (type === 1) ? myModelB : new myModelA({type: myType.Gas})})).render().$el;
我确实建议使用第二个或第三个变体,而不是将它们一起干扰。实际上,我的函数式程序员喜欢第三个,实际上,因为你只有一个赋值而不必单独声明变量而不是赋值。