Ana içeriğe geç
Modül 2 · Ders 4 ders 4Kurstaki 8/32~8 min
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:

JS
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'); // true

parseInt 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.

JS
Number('42px'); // NaN
parseInt('42px'); // 42
parseFloat('3.14em'); // 3.14
parseInt('   12 anni'); // 12
parseInt('ciao12'); // NaN  ← must start with digits

Sayı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.

JS
(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 +:

JS
Number((3.14159).toFixed(2)); // 3.14
+(3.14159).toFixed(2); // 3.14

NaN: ısıran değer

NaN ("Sayı Değil") başarısız olan sayısal işlemler tarafından üretilir:

JS
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 === NaN eşittir false
  • test etmek için Number.isNaN(x) fonksiyonunu kullanın
JS
const x = Number('ciao');
x === NaN; // false (!)
Number.isNaN(x); // true

Deneyin

Egzersiz#js.m2.l4.e1
Denemeler: 0Yükleniyor…

'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.

Düzenleyici yükleniyor…
İ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

Egzersiz#js.m2.l4.e2
Denemeler: 0Yükleniyor…

`n = Number('non un numero')` verildiğinde, sonucun NaN olması durumunda doğru olarak değerlendirilen tek bir ifade yazın.

Düzenleyici yükleniyor…
İpucu göster

Number.isNaN kullanın, n === NaN değil: NaN kendine eşit değildir.

3 denemeden sonra çözüm mevcut