检查是否设置了JavaScript布尔值



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

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

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

如果要检查对象是否具有特定属性,那就是in关键字:

'required' in params

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

params.hasOwnProperty('required')

这会解决您的问题吗?

if(required!=undefined)

最新更新