JavaScript'te değişkenin sayı mı yoksa dize mi olduğunu kontrol edin


Yanıtlar:


442

Yapıcılarla değil, gerçek gösterimle uğraşıyorsanız, typeof : kullanabilirsiniz .

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

Bir kurucu aracılığıyla sayılar ve dizeler oluşturuyorsanız, bunun için geri dönebileceğini var foo = new String("foo")unutmayın .typeofobjectfoo

Belki de türü kontrol etmek için daha kusursuz bir yöntem, underscore.js'de bulunan yöntemi kullanmak olacaktır (açıklamalı kaynak burada bulunabilir ),

var toString = Object.prototype.toString;

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

Bu true, aşağıdakiler için bir boole döndürür :

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

69
sırasıyla "dize" ve "sayı" yazan
Thilo

27
Bu doğru değil! Bir dizenin iki olası gösterimi vardır. alert (typeof new String ()) "Object" çıktısını verir. Daha da kötüsü, javascript zaman zaman optimizasyon amacıyla sahnelerin arkasındaki iki temsil arasında ileri geri dönecektir
George Mauer

3
@George OP'ye göre, sadece mevcut değişkenler test edilecektir.
Sampson

3
Tabii, ama isString (str) {return typeof str === 'string'} fonksiyonum olduğunu varsayalım, bazı Java-dönüştürmek benim yöntemini kullanarak olabilir var myString = new String("stuff I like"); isString(myString)bu yüzden yanlış döndürür. Ayrıca, backgroiund dönüşümünün ne kadar sürdüğünden tam olarak emin değilim, "hi" .length dediğimde, "hi" bir nesneye dönüştürülür, ne kadar sürede tekrar dönüştürüleceğinden emin değilim ya da hiç bağlıysa değişken.
George Mauer

8
Doğru, ancak wth String nesnesini yine de kullanmak ister misiniz?
Félix Saparelli

211

Bunu yapmanın en iyi yolu isNaN+ tip döküm kullanmaktır:

Güncellenmiş all-in yöntemi:

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

Regex kullanarak aynı:

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
Geçerli sayılar olarak ayrıştırılan dizeleri saymak istiyorsanız, bu iyi bir çözüm gibi görünür.
Trevor Burnham

2
Bilginize: null0'a zorlanır ve için doğru değeri veririsNumber(null);
Edward

1
sorun nedirfunction is_number(n) { return /^-?[\d.]+(?:e-?\d+)?$/.test(n);}
OneOfOne

1
Bu, '123abc' gibi bir dize için de başarısız olur.
ash

1
@ ash Teşekkürler, bu durumu da kapsayacak şekilde çözümü güncelledim.
BitOfUniverse

73

Bulduğum en iyi yolu, dize, yani:

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

veya bir sayı özelliği için sayı denetimi ile bir şeyler yapmak istiyorsanız,

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

Bu bir çeşit "ördek yazarak" gibi, en mantıklı olan size kalmış. Yorum yapmak için yeterli karma yok, ama typeof kutulu dizeler ve sayılar için başarısız, yani:

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

"nesne" uyarısı verir.


2
Bu typeofher zaman bir dize, ilkel veya dize nesne için test edebilirsiniz daha iyi olarak bulmak . İstediğiniz tür için benzersiz bir yöntem test etmeniz yeterlidir.
ADTC

Kodu korumak zorunda olan birinin bakış açısından, bu yolu seçmek kafa karıştırıcı olabilir. "Neden alt dize kullandılar ve herhangi bir değer iletmediler? Burada hangi iş mantığını kaçırıyorum?" En azından bunun, ilgili mantığı açıklayan bir yorumla eşleştirilmesi gerekir.
Lemmings19

3
@ Lemmings19 Aslında alt dize yöntemini çağırmaz, yalnızca x'in bir alt dize yöntemine sahip olup olmadığını kontrol eder.
Alokito

1
Ördek yazmanın bu fikrini seviyorum ama bu gibi şeyler için başarısız olacak {substring:"hello"}. Benim için biliyorum sadece ben (modül) yapmak için gereken belirli bir işlem (dizeleri modülü üzerinde tanımsız döndürür) kontrol etmek için gereken tip için ne yaptığını test sonra türünü almak yerine kontrol etti.
Tadhg McDonald-Jensen

30

Şunu arıyorsunuz 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"));

Bkz. MDN'de JavaScript isNaN () İşlevi .


3
Yöntem adı için ters işlemi seçeceklerini garip buluyorum. İsNumber () öğesini çağırmak daha sezgisel görünüyor.
Nathan Taylor

12
Aslında 'isNumber' ın ters işlemi değildir. NaN, javascript içindeki özel bir sayı değeridir. isNaN kendisine sağlanan her şeyi sayıya dönüştürür ve sonucun NaN olup olmadığını kontrol eder. "25" gibi dizeler için yanlış sonuç alırsınız.
Chetan Sastry

1
Sadece "25" ile test ettim ve beklediğim gibi yanlış döndü.
Jakob Gade

2
NaN, IEEE 754 İkili Kayan Nokta Aritmetiği Standardı'nda sadece bir JavaScript değil, özel bir değerdir. (Kesin olmak gerekirse: "IEEE Standardının 9007199254740990 (yani (2 ^ 53) -2) farklı" Sayı Değil "değerleri ECMAScript'te tek bir özel NaN değeri olarak temsil edilir." )
NickFitz

2
İçin (ancak için ) isNaNdöndüren unutmayın . falsenulltrueundefined
Toni

28

Değerin bir dize değişmezi mi yoksa String nesnesi mi olduğunu kontrol edin:

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

Ünite testi:

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");

Bir sayıyı kontrol etmek benzerdir:

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

1
(o.constructor === String) tek başına dize değişmez değerleri için bile yeterli gibi görünüyor.
Chris Noe

2
Eğer o === null
TJ

3
Bu çözümü sevdim. Boş durumda olsa da istisnayı önlemek için, o.constructor yerine o ["yapıcı"] kullanın
dreamerkumar

2
@VishalKumar Yani bu bütün bir ihtiyaçları olup: function is (type, value) { return value["constructor"] === type; }?
ceving

22

ES2015'ten beri bir değişkenin geçerli bir sayı olup olmadığını kontrol etmenin doğru yolu Number.isFinite(value)

Örnekler:

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
Bunun Internet Explorer'da desteği yoktur. developer.mozilla.org/tr-TR/docs/Web/JavaScript/Reference/…
davedeecoder

1
Orijinal soru olan String üzerinde çalışmaz.
Eric Grange

18

Bunu dene,

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

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

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

'-2' deneyin. yanlış döndürür.
KChen

1
Neden işe yaramayan bir yanıtı saklıyorsunuz (ya da düzenlemiyorsunuz)? ... Unutmayın, negatif bir sayı da tamsayı olabilir.
Ason

13

Bunu yapmanın en iyi yolu:

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

Bu, aşağıdaki test senaryolarını karşılar:

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

Veya bilinmeyen bir tür döndürmek için uyarlayın:

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

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

12 Mayıs 2012 Güncelleme: Javascript'te tam örnek : A Better typeof .


Aşağıdakilerle ilgili iyileştirme için hala yer realTypeOf: kabul edilenle realTypeOf(NaN) -> "Number"aynı davranıştır, typeofancak yine de idealden uzaktır.
Max

9

İşte sıfır veya null dize ekleyerek girdiyi bir sayıya veya dizeye zorlama fikrine dayanan ve ardından yazılan eşitlik karşılaştırması yapan bir yaklaşım.

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

Bazı anlaşılmaz nedenlerden dolayı, x===x+0daha iyi performans gösteriyor gibi görünüyor x===+x.

Bunun başarısız olduğu durumlar var mı?

Aynı damarda:

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

Bu hafif daha hızlı görünüyor ya x===true || x===falseya typeof x==="boolean"(ve çok daha hızlı x===Boolean(x)).

Sonra da var

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

Bütün bunlar, herhangi bir değere uygulanabilen ve söz konusu türden bir değeri güvenilir bir şekilde üretebilen, her tipe özgü bir "kimlik" işleminin varlığına bağlıdır. Tarihler için böyle bir operasyon düşünemiyorum.

NaN için,

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

Bu temelde alt çizginin sürümüdür ve durduğu noktadan yaklaşık dört kat daha hızlıdır isNaN(), ancak alt çizgi kaynağındaki yorumlar "NaN, kendine eşit olmayan tek sayıdır " ve _.isNumber için bir kontrol ekler. Neden? Başka hangi nesneler kendilerine eşit olmaz? Ayrıca, alt çizgi kullanır - x !== +xama +burada ne fark yaratabilir ?

Sonra paranoyak için:

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

veya bu

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

1
x! == + x ilk önce x'i sayıya dönüştürmeye çalışır.
Adrian Bartholomew

8

Sadece 1'e bölebilir misin?

Sorunun "123ABG" gibi bir dize girişi olacağını varsayalım.

var Check = "123ABG"

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

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

Son zamanlarda yaptığım gibi.


Ben bir sayı dizesi ise doğru dönmesini istediğini sanmıyorum. Belki === kullanın
Curtis

7

ah, ne dersin:

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

Birkaç ay sonra tekrar gözden geçirildikten sonra, bu yalnızca garantiler obj, yöntem veya özellik adı toLowerCasetanımlanmış bir nesnedir . Cevabımdan utanıyorum. Lütfen en çok oy alanlara bakın typeof.


7

Veya sadece ters çevirmeyi kullanın isNaN():

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

Ve evet, jQuery's kullanmak $.isNumeric()para için daha eğlenceli.


isNaN('123')bağımsız değişken sayısal bir dize olmasına ve sayısal bir tür olmamasına rağmen false değerini verir
JustAMartin

6

Ben var bir dizeye dönüştürmek performansı düşürür düşünüyorum, en azından en son tarayıcılarda yapılan bu test öyle gösterir.

Performansı önemsiyorsanız, bunu kullanırdım:

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

Değişken bir dize ise kontrol için (eğer kullansanız bile var str = new String("foo"), str instanceof Stringgerçek dönecekti).

Bir sayı olup olmadığını kontrol gelince yerli için gitmek istiyorum isNaN; işlevi.


5

jQuery bunu kullanır:

function isNumber(obj) {
  return !isNaN( parseFloat( obj ) ) && isFinite( obj );
}

4

Bu çözüm, burada ortaya çıkan sorunların çoğunu çözmektedir!

Bu şimdiye kadar kullandığım en güvenilir yöntem. Bunu icat etmedim ve nereden bulduğumu hatırlayamıyorum. Ancak diğer tekniklerin başarısız olduğu yerlerde çalışır:

// 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/

Doğruluk örneği

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
Ve gerçekten yavaş.

Tarazaburo, verilerinizi nereden aldığınızı bilmiyorum, ancak küçük bir kıyaslama şu
şekildedir

Bunu "gerçekten yavaş" bulamıyorum. 1 milyon iterasyonun üzerindeki hızı test typeofederek, Chrome'daki yerel yöntemin (0.788s ve 1.481s) yarı hızından daha kötü olmadığını düşünüyorum. Geliştirilmiş sonuçlar dikkate alındığında bu kesinlikle kabul edilebilir bir performanstır. Sizce neden "gerçekten yavaş"? Belki de IE6 / 7 / 8'de? Ancak bu tarayıcılarda her şey "gerçekten yavaş".
Michael Mikowski

Bunu zaten söyledim çünkü kıyaslamayı zaten yapmıştım. Jsperf.com/check-typeof-number-again adresinde yeni bir tane bir araya getirin ve typeof100 kat daha hızlı, ne eksik?

3m ops / s'nin türü kontrol ederken çoğu kod için sorun olmadığı gerçeğini kaçırıyorsunuz. Ben buna "yavaş" demem. Kıyaslamam şöyle görünüyordu: var i, k, start = + new Date (); (i = 0; i <1000000; i ++) {k = typeof ('foo'); k = typeof (123.5); }; end = + yeni Tarih (); console.log (son başlangıç);
Michael Mikowski


4

typeof çoğu durumda benim için çok iyi çalışıyor. Bir if ifadesi kullanmayı deneyebilirsiniz

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

burada x, seçtiğiniz herhangi bir değişken addır


Bu cevap en çok oylanan cevap üzerine ne ekliyor?
Bartek Banachewicz

2
Sadelik ve netlik?
Tim Erickson

3

Pozitif ve negatif sayıları da düşünen en iyi yol: O'Reilly Javascript ve DHTML Yemek Tarifleri :

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

Errr? Sadece düzenli ifadeler kullanın! :)

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

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

3

typeof ile '1234' olarak bir dize 'string' göstereceğinden ve tersi asla gerçekleşemeyeceğinden (123 tipi typeof daima sayı olacaktır), en iyisi basit bir normal ifade kullanmaktır /^\-?\d+$/.test(var). Ya da kayan, tamsayı ve negatif sayıları eşleştirmek için daha gelişmiş, /^[\-\+]?[\d]+\.?(\d+)?$/ Önemli tarafı .testvar bir dize değilse bir istisna atmayacak, değer herhangi bir şey olabilir.

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 

Gerçek türü arıyorsanız, o zaman yalnız typeof yapacak.


3

@ BitOfUniverse'nin cevabı iyi ve ben yeni bir yol buluyorum:

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

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

0Temettü olamayacağımı biliyorum , ama burada fonksiyon mükemmel çalışıyor.


2

Tip kontrolü

typeofİşleç kullanarak değişken türünü kontrol edebilirsiniz :

typeof variable

Değer kontrolü

Aşağıdaki kod, sayılar için true, başka bir şey için false döndürür:

!isNaN(+variable);

var değişken = '123'; console.log (! isNaN (+ değişken)); bir sayı türü değil, bir dize olmasına rağmen true verir
JustAMartin

Çünkü '123' bir sayıdır! Değişkenin türünü bilmek istiyorsanız, typeofoperatörü kolayca kullanabilirsiniz ! @JustAMartin
Amir Fo

Evet, ancak asıl soru dize türü değişkenleri sayı türü değişkenlerden ayırmaktı. '123` hala bir karakter dizisidir. 123'ü geçersem, cevap şu olmalıdır, numberancak '123' veya 'abc' ya da başka bir alıntı yapılan değeri geçersem, bir dizedir ve bir sayıya ayrıştırılıp ayrıştırılamayacağı önemli değildir.
JustAMartin

@JustAMartin Tamam Cevabımı düzenledim.
Amir Fo

1

XOR işlemi sayı veya dizeyi algılamak için kullanılabilir. ^ 0 sayısı her zaman sayıyı çıktı olarak verir ve dize ^ 0 çıktı olarak 0 verir.

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

1

Basit ve kapsamlı:

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

Test senaryoları:

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

Basitçe kullanın

myVar.constructor == String

veya

myVar.constructor == Number

nesne veya değişmez olarak tanımlanan dizeleri işlemek ve bir yardımcı işlevi kullanmak istemezsiniz.


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

0

Partiye çok geç; Ancak, bazı girişlerin bir dize veya tek çekimde bir sayı olup olmadığını kontrol etmek istediğimde, aşağıdakiler her zaman benim için iyi çalıştı.

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

0

Bir değişkenin sayı olup olmadığını kontrol ederken bir jsperf oluşturdu. Oldukça ilginç! typeof aslında bir performans kullanımı vardır. Kullanılması typeofsayıların dışında herhangi bir şey için, genellikle bir 1 / 3rd hızını gider variable.constructorjavascript nesneler şunlardır veri tiplerinin çoğunluğu beri; sayılar değil!

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

typeof variable === 'number'| en hızlı | 5 gibi bir sayı istiyorsanız, '5' değil
typeof parseFloat(variable) === 'number'| en hızlı | 5 ve '5' gibi bir sayı istiyorsanız

isNaN()daha yavaş, ama o kadar yavaş değil. Ben yüksek umutları vardı parseIntve parseFloatancak korkunç derecede yavaş.


0

Sayıları tespit etmek için JavaScript'ten aşağıdaki pasaj: Douglas Crockford'un İyi Bölümleri önemlidir:

İsFinite işlevi, bir değerin sayı olarak kullanılıp kullanılamayacağını belirlemenin en iyi yoludur, çünkü NaN ve Infinity'yi reddeder. Ne yazık ki, isFinite işlenenini bir sayıya dönüştürmeye çalışacaktır, bu nedenle bir değer aslında bir sayı değilse iyi bir test değildir. Kendi isNumber işlevinizi tanımlamak isteyebilirsiniz:

var isNumber = function isNumber(value) { return typeof value === 'number' &&
            isFinite(value);
};
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.