Javascript将未定义值设置为默认值,但仅当未定义时

Javascript将未定义值设置为默认值,但仅当未定义时,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 {

我想知道这是否是解决javascript问题的最佳方法。我想首先检测变量是否未定义。如果不是,我想插入一个默认值

例如,此if语句正在接收一个名为zoomControl的变量。它可以有3个可能的值。正确、错误或未定义

我希望输出为:true=true,false=false,undefined=true

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;
}