Setting mặc định giá trị tùy chọn trong JavaScript thường được thực hiện thông qua các nhân vật ||
Làm cách nào để đặt giá trị boolean mặc định trong 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'
đó làm việc vì color
là undefined
và undefined || String
luôn là String
. Tất nhiên cũng hoạt động theo cách khác xung quanh String || undefined
là String
. Khi hai số Strings
xuất hiện, cái đầu tiên thắng 'this' || 'that'
là 'this'
. Nó KHÔNG hoạt động theo cách khác xung quanh là 'that' || 'this'
là 'that'
.
Câu hỏi đặt ra là: Làm thế nào tôi có thể đạt được cùng giá trị boolean?
Lấy ví dụ sau
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 !!!!!!
Đối myCar
nó hoạt động vì undefined || true
là true
nhưng như bạn có thể nhìn thấy nó không làm việc cho myOtherCar
vì false || true
là true
. Thay đổi thứ tự không hữu ích khi true || false
vẫn là true
.
Vì vậy, tôi thiếu một số thứ ở đây hay đây là cách duy nhất để đặt giá trị mặc định?
this.hasWheels = (hasWheels === false) ? false: true
Chúc mừng!
Đó là thông minh! Tôi thích nó. – zemirco
@zeMirco: Vì vậy, bạn đang thực sự yêu cầu tất cả các giá trị falsey ngoại trừ 'false' được coi là' true'? Nếu vậy, tôi tự hỏi tại sao bạn muốn sử dụng '|| 'ngay từ đầu. Rõ ràng một thử nghiệm rõ ràng cho 'false' sẽ là giải pháp đơn giản nhất. –
@thesystem - Anh ấy không muốn sử dụng '|| '; nó đã được chuyển từ việc sử dụng '||' cho các giá trị không boolean. Câu hỏi đã được đăng, tôi nghĩ, bởi vì '||' là _not_ đang làm những gì cần thiết. –