변수 유형이 부울 유형인지 어떻게 확인합니까?
내 말은, 다음과 같은 대안이 있습니다.
if(jQuery.type(new Boolean()) === jQuery.type(variable))
//Do something..
그러나 그것은 나에게 예쁘지 않은 것 같습니다.
이것을 달성하는 더 깨끗한 방법이 있습니까?
답변
그게 typeof
거기에 있습니다. 괄호는 연산자 이므로 선택 사항 입니다.
if (typeof variable === "boolean"){
// variable is a boolean
}
답변
기본 값만 확인하려는 경우
typeof variable === 'boolean'
이상한 이유로 생성자로 생성 된 부울이있는 경우 실제로 부울이 아니지만 기본 부울 값을 포함하는 객체이며 기본 부울과 함께 생성 된 객체를 확인하는 한 가지 방법 new Boolean
은 다음 과 같습니다.
function checkBool(bool) {
return typeof bool === 'boolean' ||
(typeof bool === 'object' &&
bool !== null &&
typeof bool.valueOf() === 'boolean');
}
답변
로 순수 자바 스크립트 , 그냥 간단하게 사용할 수 있습니다 typeof
와 같은 무언가를 typeof false
또는 typeof true
그것을 반환합니다 "boolean"
…
그러나 이것이 유일한 방법은 아닙니다. 아래의 함수를 작성 하여 JavaScript에서 부울 을 확인할 수있는 다양한 방법과 새로운 프레임 워크에서 수행 할 수있는 다른 방법을 보여줍니다 . 이것부터 시작하겠습니다.
function isBoolean(val) {
return val === false || val === true;
}
또는 한 줄 ES6 방식 …
const isBoolean = val => 'boolean' === typeof val;
그리고 그렇게 부르십시오!
isBoolean(false); //return true
또한 Underscore 소스 코드 에서 다음과 같이 확인합니다 (함수 이름 시작시 _. 사용).
isBoolean = function(obj) {
return obj === true || obj === false || toString.call(obj) === '[object Boolean]';
};
또한 jQuery에서 다음과 같이 확인할 수 있습니다.
jQuery.type(true); //return "boolean"
에 반작용 , propTypes를 사용하는 경우, 당신은이 같은 부울로 값을 확인할 수 있습니다 :
MyComponent.propTypes = {
children: PropTypes.bool.isRequired
};
사용하는 경우 타이프 라이터를 , 당신은 입력 사용할 수있는 부울 도 :
let isDone: boolean = false;
또한 그것을 수행하는 또 다른 방법은 값을 부울로 변환하고 값이 정확히 같은지 확인하는 것과 같습니다.
const isBoolean = val => !!val === val;
또는 같은 :
const isBoolean = val => Boolean(val) === val;
그리고 그것을 부르십시오!
isBoolean(false); //return true
JavaScript에서는 실제로 간단한 확인이므로 프레임 워크를 사용하지 않는 것이 좋습니다.
답변
jQuery를 사용하거나 사용하지 않고이를 확인하는 세 가지 “바닐라”방법이 있습니다.
-
먼저 강제로 부울 평가를 수행 한 다음 원래 값과 같은지 확인하십시오.
function isBoolean( n ) { return !!n === n; }
-
간단한
typeof
확인하기 :function isBoolean( n ) { return typeof n === 'boolean'; }
-
프리미티브에서 클래스 래퍼를 완전히 과도하고 불필요하게 인스턴스화합니다.
function isBoolean( n ) { return n instanceof Boolean; }
세 번째는 클래스를 만들고 전달 하면 반환 true
됩니다new Boolean
.
프리미티브 강제에 대해 자세히 설명하기 위해 (# 1 참조) 모든 프리미티브 유형을 다음과 같이 확인할 수 있습니다.
-
Boolean
:function isBoolean( n ) { return !!n === n; }
-
Number
:function isNumber( n ) { return +n === n; }
-
String
:function isString( n ) { return ''+n === n; }
답변
순수한 자바 스크립트를 사용하여이를 달성 할 수 있습니다.
var test = true;
if (typeof test === 'boolean')
console.log('test is a boolean!');
답변
함수가 부울 객체의 유효성을 검사하도록하려면 가장 효율적인 솔루션은 다음과 같아야합니다.
function isBoolean(val) {
return val === false || val === true || val instanceof Boolean;
}
답변
JavaScript에서 변수 유형을 확인하는 가장 신뢰할 수있는 방법 은 다음과 같습니다 .
var toType = function(obj) {
return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase()
}
toType(new Boolean(true)) // returns "boolean"
toType(true); // returns "boolean"
이 합병증의 원인은 typeof true
return "boolean"
을 typeof new Boolean(true)
반환하기 때문 "object"
입니다.