Установка стандартных значений по умолчанию в 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
Ура!