javascript boolean型であるかを判定する
- 作成日 2022.12.14
- javascript
- javascript
javascriptで、boolean型であるかを判定するサンプルコードを記述してます。判定する方法は4種類くらいあり「Object.prototype.toString」オブジェクトを使用する方法以外はパフォーマンスは同じくらいです。
環境
- OS windows11 pro 64bit
- Apache 2.4.43
- ブラウザ chrome 108.0.5359.99
boolean型であるかを判定
boolean型であるかを判定するには、「typeof」した結果が「boolean」であるかで判定します。
function isBoolean(v){
if (typeof v === 'boolean') return true;
return false;
}
console.log( isBoolean(true) ) // true
console.log( isBoolean(false) ) // true
console.log( isBoolean(0) ) // false
console.log( isBoolean(1) ) // false
console.log( isBoolean(-10) ) // false
console.log( isBoolean([]) ) // false
console.log( isBoolean({}) ) // false
console.log( isBoolean(function() {}) ) // false
console.log( isBoolean(() => {}) ) // false
console.log( isBoolean(new Error()) ) // false
console.log( isBoolean(JSON) ) // false
console.log( isBoolean(Math) ) // false
console.log( isBoolean(Symbol) ) // false
console.log( isBoolean(new RegExp()) ) // false
console.log( isBoolean(new String('str')) ) // false
console.log( isBoolean(new Number(1)) ) // false
console.log( isBoolean(new Map()) ) // false
console.log( isBoolean(new Set()) ) // false
console.log( isBoolean(null) ) // false
console.log( isBoolean(undefined) ) // false
console.log( isBoolean(NaN) ) // false
console.log( isBoolean(Infinity) ) // false
console.log( isBoolean('<p>') ) // false
単純に「true」か「false」であるかを判定しても結果は同じです。
function isBoolean(v){
if (v === true || v === false) return true;
return false;
}
console.log( isBoolean(true) ) // true
console.log( isBoolean(false) ) // true
console.log( isBoolean(0) ) // false
console.log( isBoolean(1) ) // false
console.log( isBoolean(-10) ) // false
console.log( isBoolean([]) ) // false
console.log( isBoolean({}) ) // false
console.log( isBoolean(function() {}) ) // false
console.log( isBoolean(() => {}) ) // false
console.log( isBoolean(new Error()) ) // false
console.log( isBoolean(JSON) ) // false
console.log( isBoolean(Math) ) // false
console.log( isBoolean(Symbol) ) // false
console.log( isBoolean(new RegExp()) ) // false
console.log( isBoolean(new String('str')) ) // false
console.log( isBoolean(new Number(1)) ) // false
console.log( isBoolean(new Map()) ) // false
console.log( isBoolean(new Set()) ) // false
console.log( isBoolean(null) ) // false
console.log( isBoolean(undefined) ) // false
console.log( isBoolean(NaN) ) // false
console.log( isBoolean(Infinity) ) // false
console.log( isBoolean('<p>') ) // false
二重否定の論理演算子である「!!」を使用して「自身」と比較する方法もあります。
function isBoolean(v){
if (!!v === v) return true;
return false;
}
console.log( isBoolean(true) ) // true
console.log( isBoolean(false) ) // true
console.log( isBoolean(0) ) // false
console.log( isBoolean(1) ) // false
console.log( isBoolean(-10) ) // false
console.log( isBoolean([]) ) // false
console.log( isBoolean({}) ) // false
console.log( isBoolean(function() {}) ) // false
console.log( isBoolean(() => {}) ) // false
console.log( isBoolean(new Error()) ) // false
console.log( isBoolean(JSON) ) // false
console.log( isBoolean(Math) ) // false
console.log( isBoolean(Symbol) ) // false
console.log( isBoolean(new RegExp()) ) // false
console.log( isBoolean(new String('str')) ) // false
console.log( isBoolean(new Number(1)) ) // false
console.log( isBoolean(new Map()) ) // false
console.log( isBoolean(new Set()) ) // false
console.log( isBoolean(null) ) // false
console.log( isBoolean(undefined) ) // false
console.log( isBoolean(NaN) ) // false
console.log( isBoolean(Infinity) ) // false
console.log( isBoolean('<p>') ) // false
「Object.prototype.toString」オブジェクトの[[Class]]を使用しても判定可能です。
function isBoolean(v){
if (toString.call(v).slice(8, -1) === 'Boolean') return true;
return false;
}
console.log( isBoolean(true) ) // true
console.log( isBoolean(false) ) // true
console.log( isBoolean(0) ) // false
console.log( isBoolean(1) ) // false
console.log( isBoolean(-10) ) // false
console.log( isBoolean([]) ) // false
console.log( isBoolean({}) ) // false
console.log( isBoolean(function() {}) ) // false
console.log( isBoolean(() => {}) ) // false
console.log( isBoolean(new Error()) ) // false
console.log( isBoolean(JSON) ) // false
console.log( isBoolean(Math) ) // false
console.log( isBoolean(Symbol) ) // false
console.log( isBoolean(new RegExp()) ) // false
console.log( isBoolean(new String('str')) ) // false
console.log( isBoolean(new Number(1)) ) // false
console.log( isBoolean(new Map()) ) // false
console.log( isBoolean(new Set()) ) // false
console.log( isBoolean(null) ) // false
console.log( isBoolean(undefined) ) // false
console.log( isBoolean(NaN) ) // false
console.log( isBoolean(Infinity) ) // false
console.log( isBoolean('<p>') ) // false
パフォーマンスは、「toString.call」以外はどれもほぼ同じです。
-
前の記事
sakuraエディタ 行の先頭まで削除するショートカットキー 2022.12.13
-
次の記事
javascript オブジェクトの最後の要素を削除する 2022.12.14
コメントを書く