|
| 1 | +## Tür Dönüşümleri |
| 2 | + |
| 3 | +JavaScript *weakly typed* bir dildir, bu yüzden **mümkün olan yerlerde** |
| 4 | +*tür dönüşümü* uygular. |
| 5 | + |
| 6 | + // Bunlar true verir |
| 7 | + new Number(10) == 10; // Number.toString() tekrar sayıya |
| 8 | + // dönüştürülür |
| 9 | + |
| 10 | + 10 == '10'; // Katarlar sayıya dönüştürülür |
| 11 | + 10 == '+10 '; // Bir başka katar çılgınlığı |
| 12 | + 10 == '010'; // Ve bir tane daha |
| 13 | + isNaN(null) == false; // null 0'a dönüştürülür |
| 14 | + // tabii 0 NaN değildir |
| 15 | + |
| 16 | + // Bunlar false verir |
| 17 | + 10 == 010; |
| 18 | + 10 == '-10'; |
| 19 | + |
| 20 | +> **ES5 Notu:** 0 ile başlayan sayı sabitleri oktal (sekizlik) sayı sisteminde |
| 21 | +> değerlendirilir. Oktal sayı desteği ECMAScript 5 mutlak modda |
| 22 | +> **kaldırılmıştır**. |
| 23 | +
|
| 24 | +Yukarıdakilerden kaçınmak için, [mutlak eşitlik operatörünün](#types.equality) |
| 25 | +kullanılması **şiddetle** tavsiye edilir. Böylece yaygın hataların çoğundan |
| 26 | +kaçınılabilir, yine de JavaScript'in *weak typing* sisteminden kaynaklanan başka |
| 27 | +sorunlar da vadır. |
| 28 | + |
| 29 | +### Temel türlerin nesne oluşturucuları |
| 30 | + |
| 31 | +`Number` ve `String` gibi temel türlerin nesne oluşturucuları `new` anahtar |
| 32 | +kelimesi ile kullanılıp kullanılmamalarına göre farklı davranış gösterir. |
| 33 | + |
| 34 | + new Number(10) === 10; // False, Object ve Number |
| 35 | + Number(10) === 10; // True, Number ve Number |
| 36 | + new Number(10) + 0 === 10; // True, tür dönüşümü nedeniyle |
| 37 | + |
| 38 | +`Number` gibi bir temel türün nesne oluşturucusunu kullanmak yeni bir `Number` |
| 39 | +nesnesi yaratacaktır, fakat `new` kelimesi kullanılmazsa `Number` fonksiyonu |
| 40 | +bir dönüştürücü olarak davranacaktır. |
| 41 | + |
| 42 | +Ayrıca, sabitler ve nesne olmayan değerler kullanılması durumunda başka tür |
| 43 | +dönüşümleri de söz konusu olacaktır. |
| 44 | + |
| 45 | +En iyi seçenek üç olası türden birine **açıkça** dönüşüm yapılmasıdır. |
| 46 | + |
| 47 | +### Karakter katarına dönüştürmek |
| 48 | + |
| 49 | + '' + 10 === '10'; // true |
| 50 | + |
| 51 | +Bir değerin başına boş bir katar eklenerek kolayca katara dönüştürülebilir. |
| 52 | + |
| 53 | +### Sayıya dönüştürmek |
| 54 | + |
| 55 | + +'10' === 10; // true |
| 56 | + |
| 57 | +**Tek terimli** toplama operatörü kullanılarak bir değer sayıya dönüştürülebilir. |
| 58 | + |
| 59 | +### Mantıksal değişken türüne dönüştürmek |
| 60 | + |
| 61 | +**not** operatörü iki kez üst üste kullanılarak bir değer mantıksal değişken |
| 62 | +türüne dönüştürülebilir. |
| 63 | + |
| 64 | + !!'foo'; // true |
| 65 | + !!''; // false |
| 66 | + !!'0'; // true |
| 67 | + !!'1'; // true |
| 68 | + !!'-1' // true |
| 69 | + !!{}; // true |
| 70 | + !!true; // true |
| 71 | + |
| 72 | + |
0 commit comments