0

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

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

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

if (opt.set_zoomControl) {
            set_zoomControl = opt.set_zoomControl
    } else {
        set_zoomControl = true;
    }

这有效率吗?这可以缩短或重写吗?

谢谢你。

4

4 回答 4

1
set_zoomControl = ( opt.set_zoomControl === false )? false: true;
于 2013-09-25T16:36:43.150 回答
0

set_zoomControl = opt.set_zoomControl || 0;

于 2013-09-25T16:41:36.123 回答
0

这是最简洁的写法:

set_zoomControl = opt.set_zoomControl !== false;

不难看出这适用于您的所有三种情况:

false !== false      // evaluates to false
true !== false       // evaluates to true
undefined !== false  // evaluates to true

您当前的方法将导致set_zoomControl始终为true. 如果为了清楚起见,您想使用 if/else 格式,最直接的方法是首先处理 false 情况,然后让 true 和 undefined 由以下处理else

if (opt.set_zoomControl === false) {
    set_zoomControl = false;
} else {
    set_zoomControl = true;
} 
于 2013-09-25T16:40:54.200 回答
0
if (opt.set_zoomControl) {
            //true
}
else{
       //false or undefinded
}
于 2013-09-25T16:39:34.963 回答