确定是否设置了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
}
}
答案 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
});
});