JavaScript에서 변수가 숫자인지 문자열인지 확인


답변:


442

생성자가 아닌 리터럴 표기법을 다루는 경우 typeof :를 사용할 수 있습니다 .

typeof "Hello World"; // string
typeof 123;           // number

와 같은 생성자를 통해 숫자와 문자열을 만드는 경우에 대해 반환 될 수 있음 var foo = new String("foo")을 명심해야 합니다 .typeofobjectfoo

아마도 유형을 확인하는 더 확실한 방법은 underscore.js에 있는 방법을 사용하는 것일 것입니다 (주석이있는 출처는 여기 에서 찾을 수 있습니다 ).

var toString = Object.prototype.toString;

_.isString = function (obj) {
  return toString.call(obj) == '[object String]';
}

이것은 true다음에 대한 부울 을 리턴합니다 .

_.isString("Jonathan"); // true
_.isString(new String("Jonathan")); // true

69
"string"과 "number"는 각각
Thilo

27
이것은 정확하지 않습니다! 문자열의 두 가지 가능한 표현이 있습니다. alert (typeof new String ())은 "Object"를 출력합니다. 더 나쁜 것은 자바 스크립트가 최적화 목적으로 장면 뒤의 두 표현 사이에서 앞뒤로 변환되는 경우가있다
George Mauer

3
@George OP에 따르면 기존 변수 만 테스트됩니다.
Sampson

3
물론, 함수 isString (str) {return typeof str === 'string'}이라고 말하면 일부 Java 변환은 내 메소드를 사용할 수 있으므로 var myString = new String("stuff I like"); isString(myString)false를 반환합니다. 또한 backgroiund 변환이 얼마나 오래 지속되는지 잘 모르겠습니다. "hi".length, "hi"를 호출 할 때 객체로 변환되는 시점을 알고 있습니다. 변수에.
George Mauer

8
어쨌든 String 객체를 사용하고 싶습니까?
Félix Saparelli

211

가장 좋은 방법은 isNaN+ 타입 캐스팅을 사용하는 것입니다 .

업데이트 된 올인 방법 :

function isNumber(n) { return !isNaN(parseFloat(n)) && !isNaN(n - 0) }

정규식을 사용하는 것과 동일합니다.

function isNumber(n) { return /^-?[\d.]+(?:e-?\d+)?$/.test(n); } 

------------------------

isNumber('123'); // true  
isNumber('123abc'); // false  
isNumber(5); // true  
isNumber('q345'); // false
isNumber(null); // false
isNumber(undefined); // false
isNumber(false); // false
isNumber('   '); // false

21
유효한 숫자로 구문 분석하는 문자열을 계산하려는 경우 좋은 솔루션처럼 보입니다.
Trevor Burnham

2
FYI : null0으로 강제 변환되고 다음에 대해 true를 반환합니다.isNumber(null);
Edward

1
무엇이 잘못 function is_number(n) { return /^-?[\d.]+(?:e-?\d+)?$/.test(n);}
되었습니까

1
'123abc'와 같은 문자열에서도 실패합니다.
ash

1
@ash 감사합니다.이 사례를 다루기 위해 솔루션을 업데이트했습니다.
BitOfUniverse

73

내가 찾은 가장 좋은 방법은 문자열에서 메소드를 확인하는 것입니다.

if (x.substring) {
// do string thing
} else{
// do other thing
}

또는 숫자 속성으로 숫자 확인으로 무언가를 수행하려는 경우,

if (x.toFixed) {
// do number thing
} else {
// do other thing
}

이것은 "오리 타이핑"과 같은 것입니다. 어느 것이 가장 적합한 지 당신에게 달려 있습니다. 주석을 달기에 충분한 카르마가 없지만 박스형 문자열과 숫자에 대한 typeof는 실패합니다.

alert(typeof new String('Hello World'));
alert(typeof new Number(5));

"개체"에 경고합니다.


2
typeof기본 객체이든 String 객체이든 항상 문자열을 테스트 할 수있는 것보다 낫습니다 . 원하는 유형에 고유 한 방법을 테스트하기 만하면됩니다.
ADTC

코드를 유지해야하는 사람의 관점에서이 경로를 선택하는 것은 혼란 스러울 수 있습니다. "왜 하위 문자열을 사용하고 값을 전달하지 않았습니까? 여기서 어떤 비즈니스 로직이 누락 되었습니까?" 최소한 이것은 관련 논리를 설명하는 주석과 쌍을 이루어야합니다.
Lemmings19

3
@ Lemmings19 실제로는 하위 문자열 메서드를 호출하지 않고 x에 하위 문자열 메서드가 있는지 여부 만 확인합니다.
Alokito

1
나는 이런 종류의 오리 타이핑에 대한 아이디어를 좋아하지만 이것은 같은 것들에 실패합니다 {substring:"hello"}. 내 목적을 위해 방금 확인해야 할 유형 (모듈러스가 정의되지 않은 문자열)에 대해 수행 해야하는 특정 작업 (모듈러스)이 수행 한 작업을 테스트 한 다음 유형을 얻는 대신 확인했습니다.
Tadhg McDonald-Jensen

30

당신은 찾고 있습니다 isNaN():

console.log(!isNaN(123));
console.log(!isNaN(-1.23));
console.log(!isNaN(5-2));
console.log(!isNaN(0));
console.log(!isNaN("0"));
console.log(!isNaN("2"));
console.log(!isNaN("Hello"));
console.log(!isNaN("2005/12/12"));

MDN의 JavaScript isNaN () 함수 를 참조하십시오 .


3
메소드 이름에 대해 역 연산을 선택하는 것이 이상하다고 생각합니다. isNumber ()를 호출하는 것이 더 직관적 인 것 같습니다.
Nathan Taylor

12
실제로 'isNumber'의 역 연산이 아닙니다. NaN은 자바 스크립트에서 특별한 숫자 값입니다. isNaN은 제공된 모든 것을 숫자로 변환하고 결과가 NaN인지 여부를 확인합니다. "25"와 같은 문자열의 경우 잘못된 결과가 나타납니다.
Chetan Sastry

1
방금 "25"로 테스트했는데 예상대로 false를 반환했습니다.
Jakob Gade

2
NaN은 JavaScript 일뿐 만 아니라 이진 부동 소수점 산술에 대한 IEEE 754 표준의 특별한 값입니다. (음, 정확하게는 : "는 9,007,199,254,740,990 (인 (2 ^ 53) -2) 별개의"숫자가 아닌 값의 "IEEE 표준 값 단일 전용의 NaN 값으로 ECMAScript를 표현한다." )
NickFitz

2
명심 isNaN반환 false을위한 null(그러나 true대한 undefined).
Toni

28

값이 문자열 리터럴 또는 문자열 객체인지 확인하십시오.

function isString(o) {
    return typeof o == "string" || (typeof o == "object" && o.constructor === String);
}

단위 테스트 :

function assertTrue(value, message) {
    if (!value) {
        alert("Assertion error: " + message);
    }
}

function assertFalse(value, message)
{
    assertTrue(!value, message);
}

assertTrue(isString("string literal"), "number literal");
assertTrue(isString(new String("String object")), "String object");
assertFalse(isString(1), "number literal");
assertFalse(isString(true), "boolean literal");
assertFalse(isString({}), "object");

숫자 확인도 비슷합니다.

function isNumber(o) {
    return typeof o == "number" || (typeof o == "object" && o.constructor === Number);
}

1
(o.constructor === String) 자체는 문자열 리터럴에도 충분합니다.
Chris Noe

2
o === null
TJ 인

3
나는이 솔루션을 좋아했습니다. 널 (null) 경우의 예외를 피하려면 o.constructor 대신 o [ "constructor"]를 사용하십시오.
dreamerkumar

2
@VishalKumar 그래서 이것은 모두 하나의 요구입니다 : function is (type, value) { return value["constructor"] === type; }?
ceving

22

ES2015부터 변수에 유효한 숫자가 있는지 확인하는 올바른 방법은 Number.isFinite(value)

예 :

Number.isFinite(Infinity)   // false
Number.isFinite(NaN)        // false
Number.isFinite(-Infinity)  // false

Number.isFinite(0)          // true
Number.isFinite(2e64)       // true

Number.isFinite('0')        // false
Number.isFinite(null)       // false

1
Internet Explorer에서는 지원되지 않습니다. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
davedeecoder

1
원래 질문 인 문자열에서는 작동하지 않습니다.
Eric Grange

18

이 시도,

<script>
var regInteger = /^-?\d+$/;

function isInteger( str ) {    
    return regInteger.test( str );
}

if(isInteger("1a11")) {
   console.log( 'Integer' );
} else {
   console.log( 'Non Integer' );
}
</script>

'-2'를 시도하십시오. false를 반환합니다.
KChen

1
왜 작동하지 않는 답변을 유지합니까 (또는 편집하지 않습니까)? ... 음수도 정수일 수 있습니다.
Ason

13

가장 좋은 방법은 :

function isNumber(num) {
  return (typeof num == 'string' || typeof num == 'number') && !isNaN(num - 0) && num !== '';
};

이는 다음 테스트 사례를 충족합니다.

assertEquals("ISNUMBER-True: 0", true, isNumber(0));
assertEquals("ISNUMBER-True: 1", true, isNumber(-1));
assertEquals("ISNUMBER-True: 2", true, isNumber(-500));
assertEquals("ISNUMBER-True: 3", true, isNumber(15000));
assertEquals("ISNUMBER-True: 4", true, isNumber(0.35));
assertEquals("ISNUMBER-True: 5", true, isNumber(-10.35));
assertEquals("ISNUMBER-True: 6", true, isNumber(2.534e25));
assertEquals("ISNUMBER-True: 7", true, isNumber('2.534e25'));
assertEquals("ISNUMBER-True: 8", true, isNumber('52334'));
assertEquals("ISNUMBER-True: 9", true, isNumber('-234'));

assertEquals("ISNUMBER-False: 0", false, isNumber(NaN));
assertEquals("ISNUMBER-False: 1", false, isNumber({}));
assertEquals("ISNUMBER-False: 2", false, isNumber([]));
assertEquals("ISNUMBER-False: 3", false, isNumber(''));
assertEquals("ISNUMBER-False: 4", false, isNumber('one'));
assertEquals("ISNUMBER-False: 5", false, isNumber(true));
assertEquals("ISNUMBER-False: 6", false, isNumber(false));
assertEquals("ISNUMBER-False: 7", false, isNumber());
assertEquals("ISNUMBER-False: 8", false, isNumber(undefined));
assertEquals("ISNUMBER-False: 9", false, isNumber(null));

13
//testing data types accurately in JavaScript (opposed to "typeof")
//from http://bonsaiden.github.com/JavaScript-Garden/
function is(type, obj) {
    var clas = Object.prototype.toString.call(obj).slice(8, -1);
    return obj !== undefined && obj !== null && clas === type;
}

//basic usage
is('String', 'test'); // true
is('Array', true); // false

또는 알 수없는 유형을 반환하도록 조정하십시오.

function realTypeOf(obj) {
    return Object.prototype.toString.call(obj).slice(8, -1);
}

//usage
realTypeOf(999); // 'Number'

2012 년 5 월 12 일 업데이트 : Javascript 전체 예제 : A Better typeof .


여전히 개선의 여지가있다 realTypeOf: 합의 된 realTypeOf(NaN) -> "Number"것과 동일 typeof하지만 여전히 이상적이지는 않다.
최대

9

다음은 0 또는 null 문자열을 추가하여 입력을 숫자 또는 문자열로 강제 변환 한 다음 유형이 지정된 동등 비교를 수행하는 아이디어를 기반으로 한 접근 방식입니다.

function is_number(x) { return x === x+0;  }
function is_string(x) { return x === x+""; }

일부 헤아릴 수없는 이유로, x===x+0보다 더 잘 수행 할 것으로 보인다 x===+x.

이것이 실패하는 경우가 있습니까?

같은 맥락에서:

function is_boolean(x) { return x === !!x; }

이것은 어느 것보다 약간 빠르 x===true || x===false거나 typeof x==="boolean"(보다 훨씬 빠릅니다 x===Boolean(x)).

다음도 있습니다

function is_regexp(x)  { return x === RegExp(x); }

이들 모두는 모든 유형에 적용 할 수 있고 해당 유형의 값을 확실하게 생성 할 수있는 각 유형에 특정한 "ID"연산의 존재에 의존합니다. 나는 날짜에 대한 그런 수술을 생각할 수 없다.

NaN의 경우

function is_nan(x) { return x !== x;}

이것은 기본적으로 밑줄의 버전이며, 약 4 배 빠르지 만 isNaN()밑줄 소스의 주석은 "NaN은 그 자체와 다른 유일한 숫자 "라고 언급하고 _.isNumber에 대한 검사를 추가합니다. 왜? 다른 어떤 물건들은 그들 자신과 같지 않습니까? 또한 밑줄을 사용 x !== +x하지만 +여기에서 어떤 차이점이 있습니까?

그런 다음 편집증의 경우 :

function is_undefined(x) { return x===[][0]; }

아니면 이거

function is_undefined(x) { return x===void(0); }

1
x! == + x는 먼저 x를 숫자로 변환하려고 시도합니다.
아드리안 바르톨로메

8

그냥 1로 나눌 수 있습니까?

이 문제는 "123ABG"와 같은 문자열 입력이라고 가정합니다.

var Check = "123ABG"

if(Check == Check / 1)
{
alert("This IS a number \n")
}

else
{
alert("This is NOT a number \n")
}

내가 최근에 한 방법.


나는 그것이 문자열이라면 참을 반환하기를 원하지 않는다고 생각합니다. 아마 === 사용
Curtis

7

어, 어때요?

function IsString(obj) {
    return obj !== undefined && obj != null && obj.toLowerCase !== undefined;
}

몇 달 후 추가 검토를 거친 후에 obj는 메소드 또는 특성 이름이 toLowerCase정의 된 오브젝트 만 보장 됩니다. 나는 내 대답이 부끄럽습니다. 최고 투표를 참조하십시오 typeof.


7

또는 그냥 반전을 사용하십시오 isNaN().

if(!isNaN(data))
  do something with the number
else
  it is a string

그리고 예, jQuery를 사용하는 $.isNumeric()것이 더 재미 있습니다.


isNaN('123')인수가 숫자 형식은 숫자 문자열이고 아니지만, 허위 제공
JustAMartin

6

var를 문자열로 변환하면 성능이 저하된다고 생각 합니다. 최신 브라우저에서 수행 된 이 테스트 는 그렇게 보여줍니다.

따라서 성능에 관심이 있다면 다음을 사용합니다.

typeof str === "string" || str instanceof String

변수가 문자열 인 경우 확인하기 위해 (당신이 사용하는 경우에도 var str = new String("foo"), str instanceof Stringtrue를 돌려 준다).

숫자인지 확인하기 위해 네이티브에 갈 것입니다. isNaN; 함수.



4

이 솔루션은 여기서 제기 된 많은 문제를 해결합니다!

이것은 지금까지 내가 사용한 가장 신뢰할 수있는 방법입니다. 나는 이것을 발명하지 않았으며 처음 발견 한 곳을 기억할 수 없다. 그러나 다른 기술이 실패하는 경우 작동합니다.

// Begin public utility /getVarType/
// Returns 'Function', 'Object', 'Array',
// 'String', 'Number', 'Boolean', or 'Undefined'
getVarType = function ( data ){
  if (undefined === data ){ return 'Undefined'; }
  if (data === null ){ return 'Null'; }
  return {}.toString.call(data).slice(8, -1);
};  
// End public utility /getVarType/

정확성의 예

var str = new String();
console.warn( getVarType(str) ); // Reports "String"    
console.warn( typeof str );      // Reports "object"

var num = new Number();
console.warn( getVarType(num) ); // Reports "Number"
console.warn( typeof num );      // Reports "object"

var list = [];
console.warn( getVarType( list ) ); // Reports "Array"
console.warn( typeof list );        // Reports "object"

2
그리고 그건 정말 천천히.

Tarazaburo, 데이터를 어디서 구할 수 있을지 모르겠지만 약간의 벤치마킹 순서는 다음과 같습니다.
Michael Mikowski

나는 이것을 "정말 느리게"찾지 못한다. 백만 번 이상의 반복 테스트 속도 typeof는 Chrome 의 기본 메소드 속도 (0.788s vs 1.481s) 의 절반 이상 입니다. 이것은 개선 된 결과를 고려할 때 확실한 성능입니다. 왜 그렇게 느리다고 생각합니까? 어쩌면 IE6 / 7 / 8에 있습니까? 그러나 해당 브라우저에서는 모든 것이 "실제로 느립니다".
Michael Mikowski 2016 년

글쎄, 나는 이미 벤치마킹을 완료했기 때문에 말했다. 함께에서 새로운 작은 하나 넣어 jsperf.com/check-typeof-number-again을 , 그리고 typeof내가 무엇을 놓치고, 빠른 100 배인가?

유형을 확인할 때 대부분의 코드에서 3m ops / s가 중요하지 않다는 사실이 누락되었습니다. 나는 그것을 "실제로 느리게"부르지 않을 것이다. 내 벤치 마크는 다음과 같습니다. var i, k, start = + new Date (); for (i = 0; i <1000000; i ++) {k = typeof ( 'foo'); k = typeof (123.5); }; 종료 = + 새 날짜 (); console.log (끝-시작);
Michael Mikowski


4

대부분의 경우 typeof는 매우 잘 작동합니다. if 문을 사용해보십시오

if(typeof x === 'string' || typeof x === 'number') {
    console.log("Your statement");
}

여기서 x는 선택한 변수 이름입니다.


이 답변은 무엇을 가장 많이지지합니까?
Bartek Banachewicz 2016 년

2
단순성과 명확성?
Tim Erickson

3

내가 찾은 가장 좋은 방법은 양수와 음수를 생각하는 것입니다 : O'Reilly Javascript and DHTML Cookbook :

function isNumber(elem) {
var str = elem.value;
var oneDecimal = false;
var oneChar = 0;
// make sure value hasn't cast to a number data type
str = str.toString( );
for (var i = 0; i < str.length; i++) {
    oneChar = str.charAt(i).charCodeAt(0);
    // OK for minus sign as first character
    if (oneChar =  = 45) {
        if (i =  = 0) {
            continue;
        } else {
            alert("Only the first character may be a minus sign.");
            return false;
        }
    }
    // OK for one decimal point
    if (oneChar =  = 46) {
        if (!oneDecimal) {
            oneDecimal = true;
            continue;
        } else {
            alert("Only one decimal is allowed in a number.");
            return false;
        }
    }
    // characters outside of 0 through 9 not OK
    if (oneChar < 48 || oneChar > 57) {
        alert("Enter only numbers into the field.");
        return false;
    }
}
return true;

}


3

어? 정규식을 사용하십시오! :)

function isInteger(val) {
  return val.match(/^[0-9]$/)
}

function isFloat(val) {
  return val.match(/^[0-9]*/\.[0-9]+$/)
}

3

typeof가있는 '1234'인 문자열에는 'string'이 표시되고 역수가 발생할 수 없으므로 (123의 유형은 항상 숫자 임) 가장 간단한 정규 표현식을 사용하는 것이 가장 좋습니다 /^\-?\d+$/.test(var). 또는 부동 소수점, 정수 및 음수를 일치시키는 고급 기능입니다 /^[\-\+]?[\d]+\.?(\d+)?$/ . 중요한 측면은 .testvar가 문자열이 아닌 경우 예외를 throw하지 않으며 값이 무엇이든 될 수 있다는 것입니다.

var val, regex = /^[\-\+]?[\d]+\.?(\d+)?$/;

regex.test(val)       // false 
val = '1234';
regex.test(val)       // true
val = '-213';
regex.test(val)       // true
val = '-213.2312';
regex.test(val)       // true
val = '+213.2312';
regex.test(val)       // true
val = 123;
regex.test(val)       // true
val = new Number(123);
regex.test(val)       // true
val = new String('123');
regex.test(val)       // true
val = '1234e';
regex.test(val)       // false 
val = {};
regex.test(val)       // false 
val = false;
regex.test(val)       // false 
regex.test(undefined) // false 
regex.test(null)      // false 
regex.test(window)    // false 
regex.test(document)  // false 

실제 유형을 찾고 있다면 typeof만으로도 가능합니다.


3

@BitOfUniverse의 대답은 좋으며 새로운 방법을 생각해 냈습니다.

function isNum(n) {
    return !isNaN(n/0);
}

isNum('')  // false
isNum(2)   // true
isNum('2k') // false
isNum('2')  //true

0배당 할 수 없다는 것을 알고 있지만 여기서는 완벽하게 작동합니다.


2

타입 검사

typeof연산자 를 사용하여 변수 유형을 확인할 수 있습니다 .

typeof variable

가치 확인

아래 코드는 숫자에 대해서는 true를, 다른 것에 대해서는 false를 반환합니다.

!isNaN(+variable);

var 변수 = '123'; console.log (! isNaN (+ 변수)); 문자열이지만 숫자 유형이 아닌 경우도
마찬가지입니다.

'123'은 숫자이기 때문에! 변수의 유형을 알고 싶다면 쉽게 typeof연산자를 사용할 수 있습니다 ! @JustAMartin
Amir Fo

예, 그러나 원래 질문은 문자열 유형 변수를 숫자 유형 변수와 구별하는 것이 었습니다. '123`은 여전히 ​​문자열입니다. 123을 전달하면 답이 number되지만 '123'또는 'abc'또는 다른 인용 된 리터럴을 전달하면 문자열이며 숫자로 구문 분석 할 수 있는지 여부는 중요하지 않습니다.
JustAMartin

@JustAMartin Ok 나는 대답을 편집했다.
Amir Fo

1

XOR 연산을 사용하여 숫자 또는 문자열을 감지 할 수 있습니다. number ^ 0은 항상 숫자를 출력으로 제공하고 string ^ 0은 0을 출력으로 제공합니다.

Example: 
   1)  2 ^ 0 = 2
   2)  '2' ^ 0  = 2
   3)  'Str' ^ 0 = 0

1

간단하고 철저한 :

function isNumber(x) {
  return parseFloat(x) == x
};

테스트 사례 :

console.log('***TRUE CASES***');
console.log(isNumber(0));
console.log(isNumber(-1));
console.log(isNumber(-500));
console.log(isNumber(15000));
console.log(isNumber(0.35));
console.log(isNumber(-10.35));
console.log(isNumber(2.534e25));
console.log(isNumber('2.534e25'));
console.log(isNumber('52334'));
console.log(isNumber('-234'));
console.log(isNumber(Infinity));
console.log(isNumber(-Infinity));
console.log(isNumber('Infinity'));
console.log(isNumber('-Infinity'));

console.log('***FALSE CASES***');
console.log(isNumber(NaN));
console.log(isNumber({}));
console.log(isNumber([]));
console.log(isNumber(''));
console.log(isNumber('one'));
console.log(isNumber(true));
console.log(isNumber(false));
console.log(isNumber());
console.log(isNumber(undefined));
console.log(isNumber(null));
console.log(isNumber('-234aa'));

0

간단히 사용

myVar.constructor == String

또는

myVar.constructor == Number

객체 또는 리터럴로 정의 된 문자열을 처리하고 저장하려면 도우미 함수를 사용하고 싶지 않습니다.


0
function IsNumeric(num) {
    return ((num >=0 || num < 0)&& (parseInt(num)==num) );
}

0

파티에 매우 늦었다. 그러나 일부 입력이 한 번의 문자열 또는 숫자인지 여부를 확인하려는 경우 다음이 항상 잘 작동했습니다.

return !!Object.prototype.toString.call(input).match(/\[object (String|Number)\]/);

0

변수가 숫자인지 확인하는 jsperf를 작성했습니다. 꽤 흥미로운! typeof는 실제로 성능을 사용합니다. typeof숫자 이외의 다른 것을 사용하면 variable.constructor자바 스크립트의 대부분의 데이터 유형이 Objects 이므로 일반적으로 1/3의 속도를냅니다 . 숫자는 아닙니다!

http://jsperf.com/jemiloii-fastest-method-to-check-if-type-is-a-number

typeof variable === 'number'| 가장 빠른 | '5'가 아닌 5와 같은 숫자를 원하는 경우
typeof parseFloat(variable) === 'number'| 가장 빠른 | 5와 같은 숫자를 원하면 '5'

isNaN()느리지 만 느리지는 않습니다. 나는 높은 희망을 가지고 parseInt하고 parseFloat그러나 그들이 끔찍하게 느린했다.


0

숫자를 감지하려면 JavaScript에서 다음 구절을 찾으십시오. Douglas Crockford의 Good Parts는 관련이 있습니다.

isFinite 함수는 NaN 및 Infinity를 거부하므로 값을 숫자로 사용할 수 있는지 여부를 결정하는 가장 좋은 방법입니다. 불행히도 isFinite는 피연산자를 숫자로 변환하려고 시도하므로 값이 실제로 숫자가 아닌 경우에는 좋은 테스트가 아닙니다. 고유 한 isNumber 함수를 정의 할 수 있습니다.

var isNumber = function isNumber(value) { return typeof value === 'number' &&
            isFinite(value);
};
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.