JavaScript에서 기본 부울 값을 설정하는 방법은 무엇입니까?
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
건배!
다음과 같이 할 수 있습니다.
this.hasWheels = hasWheels !== false;
그것은 명시 적으로 true
때를 제외하고 는 값을 얻습니다 . ( 및을 포함한 다른 허위 값 은 결과가 되는데, 이것이 당신이 원하는 것이라고 생각합니다.)hasWheels
false
null
undefined
true
어때 :
this.hasWheels = (typeof hasWheels !== 'undefined') ? hasWheels : true;
다른 옵션은 다음과 같습니다.
this.hasWheels = arguments.length > 0 ? hasWheels : true;
ECMA6에서 기본 기능 매개 변수 기능을 사용할 수 있습니다 . 오늘날 ECMA6는 여전히 브라우저에서 완전히 지원되지는 않지만 babel 을 사용하고 새로운 기능을 바로 사용할 수 있습니다.
따라서 원래 예제는 다음과 같이 간단 해집니다.
// specify default value for the hasWheels parameter
var Car = function(hasWheels = true) {
this.hasWheels = hasWheels;
}
var myCar = new Car();
console.log(myCar.hasWheels); // true
var myOtherCar = new Car(false)
console.log(myOtherCar.hasWheels); // false
게시 된 답변에서 주목해야 할 변형이 있습니다.
var Var = function( value ) {
this.value0 = value !== false;
this.value1 = value !== false && value !== 'false';
this.value2 = arguments.length <= 0 ? true : arguments[0];
this.value3 = arguments[0] === undefined ? true : arguments[0];
this.value4 = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0];
};
value0 value1 value2 value3 value4
---------------------------------------------------------------------------
Var("") true true true true true
Var("''") true true '' '' ''
Var("0") true true 0 0 0
Var("'0'") true true '0' '0' '0'
Var("NaN") true true NaN NaN NaN
Var("'NaN'") true true 'NaN' 'NaN' 'NaN'
Var("null") true true null null null
Var("'null'") true true 'null' 'null' 'null'
Var("undefined") true true undefined true true
Var("'undefined'") true true 'undefined' 'undefined' 'undefined'
Var("true") true true true true true
Var("'true'") true true 'true' 'true' 'true'
Var("false") false false false false false
Var("'false'") true false 'false' 'false' 'false'
value1
is made especially fromvalue0
for string 'false' if one needs it to be boolean false. I found this relaxation useful occationally.value2
andvalue3
are modifications of original posted answers for consistency, without changed results.value4
is how Babel compiles for default parameters.
ReferenceURL : https://stackoverflow.com/questions/15464169/how-to-set-default-boolean-values-in-javascript
'developer tip' 카테고리의 다른 글
jQuery 및 Twitter Bootstrap을 사용하여 활성 탭 찾기 (0) | 2020.12.29 |
---|---|
프로그래밍 방식으로 Android에서 카메라로 사진 촬영 (0) | 2020.12.29 |
3 개 테이블의 PostgreSQL JOIN 데이터 (0) | 2020.12.29 |
Flask로 교차 오리진 리소스 공유 해결 (0) | 2020.12.29 |
Sublime Text 3에서 빠른 입력 공간 뒤에 자동 마침표 문자를 사용하지 마십시오. (0) | 2020.12.29 |