JSFiddle - React, Tailwind, and code Playground
JavaScript
const checkEqual = function(a, b, message = '') {
if (a !== b) {
/* throw new Error('Error:' + message); */
alert('Error: ' + a.toString() + ' ' + b.toString() + ' ' + message);
}
}
/* const isNumber = function(value) {
return ((typeof value === 'number') && (isFinite(value)));
}; */
/* const isNumber = (value) => {
return Number.isFinite(value);
} */
const isNumber = (value) => {
return _.isNumber(value);
}
checkEqual(true, isNumber(123)); // 数値は数値
checkEqual(true, isNumber(0));
checkEqual(true, isNumber(-1));
checkEqual(true, isNumber(123.4)); // 実数も数値
checkEqual(true, isNumber(123.0));
checkEqual(true, isNumber(10e+3)); // 特殊な記法でも数値
checkEqual(true, isNumber(10e-3));
checkEqual(true, isNumber(020)); // 8進数記法でも数値
checkEqual(true, isNumber(0xFF)); // 16進数記法でも数値
checkEqual(false, isNumber(true)); // Booleanは数値ではない
checkEqual(false, isNumber(false));
checkEqual(false, isNumber(null)); // null は数値ではない
checkEqual(false, isNumber(undefined)); // undefinde も数値ではない
checkEqual(false, isNumber(Infinity), 'Injinity is number?'); // Infinity という特殊な数値型の値は Number ではないとしておく
checkEqual(false, isNumber(NaN), 'NaN is number?'); // NaN という特殊なという特殊な数値型の値は Number ではないとしておく
checkEqual(false, isNumber('')); // 文字は数値ではない
checkEqual(false, isNumber('ABC'));
checkEqual(false, isNumber('ABC10'));
checkEqual(false, isNumber('10ABC'));
checkEqual(false, isNumber('0ABC'));
checkEqual(false, isNumber('0')); // 文字列は数値に変換可能だとしても文字列なので数値ではない
checkEqual(false, isNumber('5'));
checkEqual(false, isNumber('-5'));
checkEqual(false, isNumber('100'));
checkEqual(false, isNumber('-100'));
checkEqual(false, isNumber('10e+3'));
checkEqual(false, isNumber('10e-3'));
checkEqual(false, isNumber('020'));
checkEqual(false, isNumber('0xFF'));
checkEqual(false, isNumber([])); // 配列は数値ではない
checkEqual(false, isNumber([1]));
checkEqual(false, isNumber({})); // オブジェクトは数値ではない
checkEqual(false, isNumber({ 1: 1}));
alert('test finish');