JavaScript dinamik olarak yazılmış bir dil olduğundan, bir değerin ilkel tür numarası olup olmadığını nasıl kontrol edeceğinizi bilmek yararlıdır.
Numaranın, kodumdaki bir hatayı gösteren başka bir tür olarak görünebileceği bir örnek, ayrıştırma para biriminde olabilir:
Bu durumda, "
string" değerini geri aldığımda dizeyi bir sayıya ayrıştırmayı unuttuğumu anlarım
typeof.
parseFloat()Para birimi değerini kontrol etmek için kullanırsam , ancak para birimi sembolünü çıkarmayı unutursam, başarısız bir ayrıştırma ve garip bir sonuç alırım:
Oh hayır. Bu durumda,
typeofbeklediğim gibi çalışmıyor gibi görünüyor - çünkü
NaNdeğerler JavaScript'te sayı olarak kabul edilir.
typeofanahtar kelime döner “sayı”
Sayı ilkel türünü kontrol etmenin açık bir çözümü
typeof, yukarıda gösterdiğim gibi anahtar kelimeyi kullanmaktır .
Para birimi örneğim için, parasal değerim
NaNveya ise bir hatam olduğunu biliyorum
Infinity, ancak bu değerlerin her ikisi için de
typeofgeri dönüyor
"number".
Belki girdim bir para birimi sembolü kullanılarak yazılmıştır ve sadece
parseFloat()değeri yakalamak için kullanmayı denedim . Bu şunlarla sonuçlanır
NaN:
isNumber()işlev
Veya, kişinin bundan emin olduğu
NaNve
Infinityortaya
typeof==="number"çıkmayacağı durumda , sadece kontrol etmek yeterli olacaktır.
Tek gömlekleri seviyorum. Bence yorumlarla belgelenmeleri gerekiyor, ancak bence bunlar sadece süslü değil, gerçekten yararlı.
İşte JavaScript'te bir sayının nasıl kontrol edileceğine dair tek satırlık:
Ancak, JavaScript'te sonlu bir sayıyı kontrol etmenin daha iyi bir yolu var - yardımcı işlev
Number.isFinite(),
isNumber()yazdığım özel işlevle aynı davranışa sahip . Bir sonraki bölümde bir örnek ekledim.
Number.isFinite()
O hatırlamak için bir öğretici bir yol olsa, bir dizi kontrol etmek yazma özel işlevler aslında gereksiz olduğunu JavaScript değerleri
Infinity,
-Infinityve
NaNsayı ilkel türe aittir.
"
Number.isFinite()Yöntem, aktarılan değerin sonlu bir sayı olup olmadığını belirler." - MDN Belgeleri
Number.isFinite()Yöntem dönecektir
truesonlu sayılar için ve
falseiçin
Infinity,
-Infinityve
NaN : istediğimiz tam olarak ne -
isFinite()Yukarıda gösterildiği gibi, tür zorlaması (dizeleri sayılara zorlamak gibi) gerçekleştirecek global işlev de vardır .
Bu yöntemleri The Startup'daki makalemde derinlemesine tartışıyorum :
Infinity
Değişken A'nın bir tamsayı olup olmadığını kontrol etmek için, ayrıştırılan değerin kendisine eşit olup olmadığını görmek için gevşek eşitlik operatörünü
== kullanabilirim.
Aşağıdaki kod parçacığı, bir tamsayının nasıl kontrol edileceğine dair bir örnek verir:
Kullanmak
typeof, bir sayıya zorlanan bir dizeyi gerçek sayıdan farklılaştırır, tıpkı katı eşitlik operatörü gibi
=== .
Daha iyi, daha sağlam bir işlev için, önce para birimi simgelerini (dolar işareti ve virgül gibi) çıkarmak isteyebilirim.
JavaScript'te normal ifadeler kullanarak parayı iyice ayrıştırmak bu makalenin kapsamı dışındadır, ancak bu kod ayrıştırmadan önce
$ve kaldırır
,:
Aynı davranışa sahip olan
Numbers.parseInt()ve işlevleri de vardır
Number.parseFloat().
MDN Dokümanlarına göre , bu yinelenen işlevler "küresellerin modülerleştirilmesi [amacıyla] ECMAScript 2015'e eklenmiştir.
Hayır, JavaScript yalnızca dahili olarak 64 bit kayan nokta temsili olarak gösterilen tek bir sayı türüne sahiptir .
Bu kayan nokta, ilkel veri türü numarasıdır ve ayrıca keyfi olarak büyük sayılar için kullanılabilen BigInt adlı bir tür vardır .
JavaScript'te bir sayıyı kontrol etmek özellikle karmaşık değildir -
typeofher ikisinin de farkında olduğu
NaNve sayıya
Infinitysahip olduğu sürece, temelde nasıl olması gerektiği ile çalışır
typeof.
JavaScript'te sonlu bir sayıyı (yani değil
NaNveya
Infinity) kontrol etmenin en kolay yolu
Number.isFinite(), değerleri sayılara zorlamayan veya
isFinite()tür zorlaması yapan global'i kullanmaktır.
Bir tamsayıyı kontrol etmek, özellikle
parseInt()işlevin kullanılmasını ve ardından ayrıştırılmış değeri kendisiyle karşılaştırmayı
==(bu, dizeleri sayılara zorlama gibi sayı olmayan değerleri yazacak) veya
===(yalnızca her iki değer de sayı ise doğru döndürür) kullanarak içerir.
Başlık altında, tam sayılar ve kayan sayıların tümü aynıdır: JavaScript yalnızca bir tür sayıya sahiptir, sayı ilkel türü .
Number.isInteger()dizeleri sayılara zorlamaz:
^[0–9]+(\.[0–9]{1,2})?$para ile eşleşir :
Teknoloji dünyasında, işletmeler sürekli olarak siber suçluların şeytani faaliyetlerinin tuzağına düşme riski altındadır. Endişe verici derecede sık hale gelen böyle bir taktik, kimlik bilgilerini doldurmaktır.
Gündem: Giriş: TL; Ama okuyabilirim: A / B testi, CloudFront ve Lamba @ edge hakkında zaten bilginiz varsa, AWS Lambda @ edge ile doğrudan A / B testine gidin. A / B testi nedir? A / B testi, kullanıcıların bir web sitesinin iki farklı versiyonunun katılımını karşılaştırmaya odaklanan bir UX araştırma metodolojisidir.
Bugün AppStore'daki birçok uygulama, tablo görünümünü kaydırırken içeriği tablo görünümü başlığındaki ölçekleme gibi davranışlara sahiptir. Bu tür davranışlara nasıl ulaşabileceğimizin en basit yaklaşımını size göstereceğim.
İlk blogumda söz verdiğim gibi 'DOM Nedir?' burada 'DOM işleme' üzerine bir blog var. Bu blogda DOM'a daha fazla dalacağız ve DOM işlemenin ne olduğunu ve nasıl yapıldığını öğreneceğiz.
Node.js'de akışların nasıl çalıştığını hiç merak ettiniz mi? Sahiptim.