【问题标题】:Javascript set undefined value to a default value, but only if undefinedJavascript将未定义的值设置为默认值,但前提是未定义
【发布时间】:2013-10-01 08:58:06
【问题描述】:

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

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

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

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

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

谢谢。

【问题讨论】:

标签: javascript if-statement undefined


【解决方案1】:

set_zoomControl = opt.set_zoomControl || 0;

【讨论】:

    【解决方案2】:

    这是最简洁的写法:

    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 情况,然后让 else 处理 true 和 undefined:

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

    【讨论】:

      【解决方案3】:
      if (opt.set_zoomControl) {
                  //true
      }
      else{
             //false or undefinded
      }
      

      【讨论】:

        【解决方案4】:
        set_zoomControl = ( opt.set_zoomControl === false )? false: true;
        

        【讨论】:

        • 谢谢。我在问题描述中忘记了一个关键要求。默认值(未定义值)并不总是正确的。 (如示例代码中所示)。默认值有时可能为假。这适用于两种情况。
        猜你喜欢
        • 2012-09-06
        • 1970-01-01
        • 2020-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多