考虑一个变量master
,可以是true
或false
,而不是其他任何内容。
考虑另一个变量override
,可以是undefined
,true
或false
。
那么如何确定使用哪个变量,如果override
不是undefined
,那么使用其他方式使用master
。
也许我们可以这样做:
if ((master !== undefined && master) || override) then
...
但这是正确的还有更好的方法吗?
答案 0 :(得分:1)
if( typeof override !== "undefined" ? override : master)
这是对三元运算符的非常规使用,但它完全符合您的要求:
如果定义了override
,请使用它。否则,请使用master
。如果选择的是true
,那么......
答案 1 :(得分:1)
你这么说:
master
只能是true
或false
override
可以是true
,false
或undefined
override
不是undefined
,请使用所以正确的代码是:
if (typeof override !== "undefined" ? override : master) {
// use override
} else {
// use master
}
答案 2 :(得分:0)
这样的事情对你有用
if ((override === undefined && master) || (override !== undefined && override)) {
...
}
答案 3 :(得分:0)
与Niet所说的类似,但我认为将其存储在变量中会更清楚。
var _set = ( typeof override !== 'undefined' ? override : master );
if ( _set ) {
...
}
答案 4 :(得分:0)
我会这样做,这更清晰,更容易阅读。
var usethis;
if (typeof override != 'undefined') {
usethis = override;
} else {
usethis = master;
}
if (usethis) {
// Enable feature X
}
首先检查是否定义了override
变量:如果是,我们将使用该值,否则回退到master。然后你实际使用该值来启用一个功能(我想这是你的用例)。
如果你愿意,你可以用这种更紧凑的方式写出来:
var usethis = typeof override != 'undefined' ? override : master;
if (usethis) {
// Enable feature X
}
你有使用typeof
运算符,否则类型强制会将override
变量强制转换为布尔值,而你会错过false
值。< / p>