【问题标题】:Check if Javascript boolean is set? [duplicate]检查是否设置了 Javascript 布尔值? [复制]
【发布时间】:2017-05-08 12:22:16
【问题描述】:

确定是否设置了 Javascript 布尔值的最佳方法是什么?这是我一直在做的一个例子。这似乎有点过分,但我需要确定 如果 实际设置了一个值,而不仅仅是它是否为真:

function doSomething (params, defaults) {

    params = params || {};
    defaults = defaults || {};

    var required = (params.required === true || params.required === false) 
        ? params.required
        : (defaults.required === true || defaults.required === false)
            ? defaults.required
            : true;

    if (required) {
        // perform logic
    }
}

【问题讨论】:

  • undefined 是个不错的猜测。
  • 您是在use strict 模式下还是只是普通的旧javascript? :)

标签: javascript


【解决方案1】:

如果尚未设置值,则表示它是undefined

function printStuff(params) {
  if (params.hello !== undefined) {
    console.log(params.hello);
  } else {
    console.log('Hello, ');
  }
}

printStuff({ });
printStuff({
  hello: 'World'
});

为了进一步说明这一点,下面是它如何与布尔值一起使用。

function schrodinger(params) {
  if (params.dead === undefined) {
    console.log('The cat is neither dead nor alive');
  } else if (params.dead) {
    console.log('The cat is dead');
  } else if (!params.dead) {
    console.log('The cat is alive');
  }
}

schrodinger({
  // Not specified
});

schrodinger({
  dead: true
});

schrodinger({
  dead: false
});

【讨论】:

    【解决方案2】:

    这能解决你的问题吗?

    if(required!=undefined)
    

    【讨论】:

      【解决方案3】:

      如果你想检查一个对象是否有特定的属性,那就是in关键字:

      'required' in params
      

      还有hasOwnProperty 方法,如果你需要排除从原型继承的属性(你可能不适合这种情况):

      params.hasOwnProperty('required')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-08-22
        • 2013-04-02
        • 1970-01-01
        • 2021-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多