Javascript将未定义值设置为默认值,但仅当未定义时
我想知道这是否是解决javascript问题的最佳方法。我想首先检测变量是否未定义。如果不是,我想插入一个默认值 例如,此if语句正在接收一个名为zoomControl的变量。它可以有3个可能的值。正确、错误或未定义 我希望输出为:true=true,false=false,undefined=trueJavascript将未定义值设置为默认值,但仅当未定义时,javascript,if-statement,undefined,Javascript,If Statement,Undefined,我想知道这是否是解决javascript问题的最佳方法。我想首先检测变量是否未定义。如果不是,我想插入一个默认值 例如,此if语句正在接收一个名为zoomControl的变量。它可以有3个可能的值。正确、错误或未定义 我希望输出为:true=true,false=false,undefined=true if (opt.set_zoomControl) { set_zoomControl = opt.set_zoomControl } else {
if (opt.set_zoomControl) {
set_zoomControl = opt.set_zoomControl
} else {
set_zoomControl = true;
}
这有效吗?这可以短路或重写吗
谢谢。以下是写这篇文章最简洁的方式:
set_zoomControl = ( opt.set_zoomControl === false )? false: true;
set_zoomControl = opt.set_zoomControl !== false;
不难看出,这适用于您的三种情况:
false !== false // evaluates to false
true !== false // evaluates to true
undefined !== false // evaluates to true
您当前的方法将导致set\u zoomControl
始终为true
。如果您想使用If/else格式以保持清晰,那么最简单的方法是先处理假情况,然后让else处理true和undefined:
if (opt.set_zoomControl === false) {
set_zoomControl = false;
} else {
set_zoomControl = true;
}
set_zoomControl=opt.set_zoomControl|0代码>这可能是有用的设置_zoomControl=opt.set | | | true;非常感谢。我忘记了问题描述中的一个关键要求。默认值(未定义的值)并不总是true。(如示例代码中所示)。默认值有时可能为false。这两种情况都适用。
if (opt.set_zoomControl === false) {
set_zoomControl = false;
} else {
set_zoomControl = true;
}