检查是否设置了Javascript布尔值?

时间:2016-12-22 19:38:11

标签: javascript

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

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

3 个答案:

答案 0 :(得分:2)

如果未设置值,则表示其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
});




答案 1 :(得分:2)

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

'required' in params

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

params.hasOwnProperty('required')

答案 2 :(得分:0)

这会解决您的问题吗?

$(function(){
    $('.slider').slick({
        speed: 10000,
        autoplay: true,
        autoplaySpeed: 0,
        cssEase: 'linear',
        slidesToShow: 1,
        slidesToScroll: 1,
        variableWidth: true,
        infinite: true
    });
});