【发布时间】:2013-03-06 01:01:10
【问题描述】:
在 JavaScript 中设置默认可选值通常通过 || 字符完成
var Car = function(color) {
this.color = color || 'blue';
};
var myCar = new Car();
console.log(myCar.color); // 'blue'
var myOtherCar = new Car('yellow');
console.log(myOtherCar.color); // 'yellow'
因为color 是undefined 而undefined || String 始终是String,所以这很有效。当然,这也适用于String || undefined 是String。当出现两个Strings 时,第一个获胜'this' || 'that' 是'this'。它不能反过来工作,因为 'that' || 'this' 是 'that'。
问题是:如何使用布尔值实现相同的效果?
举个例子
var Car = function(hasWheels) {
this.hasWheels = hasWheels || true;
}
var myCar = new Car();
console.log(myCar.hasWheels); // true
var myOtherCar = new Car(false)
console.log(myOtherCar.hasWheels); // ALSO true !!!!!!
对于myCar,它有效,因为undefined || true 是true,但正如您所见,它不适用于myOtherCar,因为false || true 是true。更改顺序无济于事,因为 true || false 仍然是 true。
因此,我在这里遗漏了什么还是以下设置默认值的唯一方法?
this.hasWheels = (hasWheels === false) ? false: true
干杯!
【问题讨论】:
标签: javascript boolean