opcjonalne ustawienie domyślne wartości w JavaScript zwykle odbywa się poprzez ||
charakteruJak ustawić domyślne wartości boolowskie w 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'
który działa bo color
jest undefined
i undefined || String
jest zawsze String
. Oczywiście działa to również na odwrót: String || undefined
to String
. Gdy są dwa Strings
, pierwszy wygrywa 'this' || 'that'
jest 'this'
. To NIE działa odwrotnie, ponieważ 'that' || 'this'
jest 'that'
.
Pytanie brzmi: w jaki sposób mogę osiągnąć to samo z wartościami logicznymi?
Weźmy następujący przykład
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 !!!!!!
Dla myCar
to działa bo undefined || true
jest true
ale jak widać to nie działa dla myOtherCar
ponieważ false || true
jest true
. Zmiana kolejności nie pomaga, ponieważ true || false
nadal jest.
W związku z tym, czy coś tu brakuje, czy jest to jedyny sposób na ustawienie wartości domyślnej?
this.hasWheels = (hasWheels === false) ? false: true
Pozdrawiam!
To jest mądre! Lubię to. – zemirco
@zeMirco: Tak więc pytasz o wszystkie wartości falseta, z wyjątkiem "false", które należy uznać za "prawdziwe"? Jeśli tak, zastanawiałbym się, dlaczego chciałbyś użyć '||' w pierwszej kolejności. Oczywiście oczywistym testem dla "fałszu" byłoby najprostsze rozwiązanie. –
@thesystem - Nie chciał używać '||'; było to po prostu przeniesieniem z użycia '||' dla wartości nie-boolowskich. Pytanie zostało zamieszczone, jak sądzę, ponieważ '||' nie robił tego, co było potrzebne. –