Modül dersleri (4/4)
Dönüşümleri yazın
Her zaman bir değerin türünü dönüştürmeniz gerekir: value
bir HTML girişi bir sayıyı, bir API'yi temsil etse bile bir dize olarak gelir
dizeleri biçimlendirmek için döndürürse, bir nesneyi metin olarak kaydetmeniz gerekir. JS teklifleri
üç dönüşüm ailesi: açık, özel ayrıştırıcılar ve (olacak)
kaçınılanlar) örtülü olanlar.
Açık dönüşümler
Bunlar en açık olanlardır ve varsayılanınız olmalıdır:
Number('42'); // 42
Number('3.14'); // 3.14
Number(''); // 0 ← careful
Number(' 10 '); // 10 (spaces are ignored)
Number('ciao'); // NaN ← does not represent a number
String(42); // '42'
String(true); // 'true'
String(null); // 'null'
String(undefined); // 'undefined'
Boolean(1); // true
Boolean(0); // false
Boolean(''); // false
Boolean('abc'); // trueparseInt ve parseFloat: toleranslı ayrıştırıcılar
Number(...), parseInt ve parseFloat'dan farklı olarak **sayısal olmayanları dikkate almayın
dizenin kuyruğu **: ilk geçersiz karakterde dururlar.
Number('42px'); // NaN
parseInt('42px'); // 42
parseFloat('3.14em'); // 3.14
parseInt(' 12 anni'); // 12
parseInt('ciao12'); // NaN ← must start with digitsSayıları dize olarak biçimlendirmek için toFixed
Önceki derste kısaca görüldü: N sayıda ondalık sayıya yuvarlama ve bir sayı döndürme dize.
(3.14159).toFixed(2); // '3.14'
(1).toFixed(2); // '1.00'Bunu tekrar number biçimine dönüştürmek için Number(...) önekini veya tekliyi kullanın
+:
Number((3.14159).toFixed(2)); // 3.14
+(3.14159).toFixed(2); // 3.14NaN: ısıran değer
NaN ("Sayı Değil") başarısız olan sayısal işlemler tarafından üretilir:
Number('ciao'); // NaN
0 / 0; // NaN
parseInt('xxx'); // NaNÖzellikler:
'number'tipi var (evet, "sayı olmayan" bir sayıdır)- kendisine eşit değildir:
NaN === NaNeşittirfalse - test etmek için
Number.isNaN(x)fonksiyonunu kullanın
const x = Number('ciao');
x === NaN; // false (!)
Number.isNaN(x); // trueDeneyin
'128,95 EUR' dizesi verildiğinde, (ondalık) sayıyı çıkarın ve onu en yakın tam sayıya yuvarlayın ve sayı olarak döndürün. Beklenen: 129.
İpucu göster
parseFloat 'EUR'u yok sayar; .toFixed(0) dize olarak bir tamsayıya yuvarlar; Number(...) tekrar sayıya dönüştürür.
3 denemeden sonra çözüm mevcut
Alıştırmayı gözden geçirin
`n = Number('non un numero')` verildiğinde, sonucun NaN olması durumunda doğru olarak değerlendirilen tek bir ifade yazın.
İpucu göster
Number.isNaN kullanın, n === NaN değil: NaN kendine eşit değildir.
3 denemeden sonra çözüm mevcut