我喜欢,经常使用
return this || that
现在我从db中得到一个true或false值,当为true时我想返回false,而当false返回一个元素时,如下所示:
$('.orderDetailPanelLeft').append(function () {
return !(!json.controls.download) ||
$('<div>')
.addClass('subPanel')
.text('Download Results')
});
无论我如何添加!,!(!,!(!!它返回true或(错误地)元素。我意识到有一个简单的&#34; if&#34;解决方案,所以请不要&#39;提供这个。当json.controls.download为真时,我想使用这个||语法返回false。
如何写这个,以便在&#34; return&#34;中返回false或div。声明?
答案 0 :(得分:2)
如果你可以放弃对||
的持久爱,但仍然希望自由地去if
- 免费:
$('.orderDetailPanelLeft')
.append(function () {
return json.controls.download ? false :
$('<div>')
.addClass('subPanel')
.text('Download Results');
})
答案 1 :(得分:2)
return !json.controls.download && $('<div>')
.addClass('subPanel')
.text('Download Results');
如果您不想要包含三元运算符的if
的任何变体,这将适合您的情况。 (或者你只是讨厌关键字false
。)
为了更好的可读性,您应该更喜欢Paul Roub's answer。
&&
与short-circuits中的||
相反。
答案 2 :(得分:0)
我认为这是不可能的,因为||
运算符在计算到true
时返回第一个操作数,第二个操作数在第一个操作数被计算为false
时返回。
因此,无论你设置为第一个操作数,只要它是一个被评估为true
的布尔值,你就会得到那个布尔值,而不是元素。
正如Derek所建议的那样,您实际需要的是&&
运营商。使用&&
运算符,可以在第一个操作数计算为true时获取第二个操作数。