ECMAScript Tür Çevirme
- Önceki sayfa ECMAScript Temel Türleri
- Sonraki sayfa ECMAScript Referans Türleri
Tüm programlama dillerinin en önemli özelliklerinden biri tür dönüşüm yapabilme yeteneğidir.
ECMAScript geliştiricilere çok sayıda basit tür dönüşüm yöntemi sunar.
Çoğu tür, basit dönüşümler için yöntemlere sahiptir ve daha karmaşık dönüşümler için birkaç genel yöntem de vardır. Her durumda, ECMAScript'te tür dönüşümleri kısa bir adımdır.
Dizgeye dönüştürme
ECMAScript'in temel değerleri (Boolean değerleri, sayılar ve dizgiler) ilginç bir özellikle sahte nesnelerdir, bu da onların gerçekten özellik ve metodlara sahip olduğunu anlamına gelir.
Örneğin, dizgenin uzunluğunu elde etmek için aşağıdaki kodu kullanabilirsiniz:
var sColor = "red"; alert(sColor.length); // Çıktı "3"
Ancak "red" temel türdeki bir dizge olsa bile, boyutunu saklamak için length özelliğine sahiptir.
Sonuç olarak, 3 ana temel tür (Boolean değerleri, sayılar ve dizgiler) toString() metoduna sahiptir ve bu değerleri dizgeye dönüştürebilir.
İpucu:Sizi belki şaşırtacak, "Dizgilerde toString() metodu var mı, bu fazla mıdır?" diye sorabilirsiniz. Evet, gerçekten de öyle, ECMAScript tüm nesnelerin toString() metodunu tanımlar, bu da sahte nesneler veya gerçek nesneler olsun. Çünkü String türü sahte nesnelerdir, bu yüzden mutlaka toString() metoduna sahiptir.
Boolean türünün toString() yöntemi, sadece "true" veya "false" çıktı verir, sonuç değişkenin değeri tarafından belirlenir:
var bFound = false; alert(bFound.toString()); // Çıktı "false"
Number türünün toString() yöntemi, iki özel modda çalışır, yaniÖntanımlı modveTemel mod。Öntanımlı modda, toString() yöntemi, sayı değerini ilgili string ile çıktıya verir (hem tamsayı hem de ondalıklı sayı veya bilimsel sayı olsa bile), aşağıdaki gibi:
var iNum1 = 10; var iNum2 = 10.0; alert(iNum1.toString()); // Çıktı "10" alert(iNum2.toString()); // Çıktı "10"
Açıklama:Öntanımlı modda, sayının ilk olarak hangi temsil yöntemiyle beyan edildiği ne olursa olsun, Number türünün toString() yöntemi, her zaman sayının onal temsilini döndürür. Bu yüzden, otobase veya onaltılık kütleci olarak beyan edilen sayılar onal formatta çıktı verir.
Number türünün toString() yönteminin temel modellerini kullanarak farklıTemelSayıları çıktıya verin, örneğin ikili temel 2, otobase 8, onaltılık temel 16'dır.
TemelBu, toString() yönteminin parametresi olarak dönüştürmek istediğiniz temel sayının başka bir eklenmesi sadece,
var iNum = 10; alert(iNum.toString(2)); // Çıktı "1010" alert(iNum.toString(8)); // Çıktı "12" alert(iNum.toString(16)); // Çıktı "A"
Önceki örnekte, 10 numarasını üç farklı formatta yazdırdık, yani ikili formatta, otobase formatta ve onaltılık formatta. HTML, her rengi onaltılık formatta temsil eder, HTML'de sayıları işlemek için bu özellik çok kullanışlıdır.
Açıklama:Dijital numaralara toString(10) çağrısı, toString() çağrısı ile aynıdır, her ikisi de numaranın onal base formunu döndürür.
İlgili:
Bakınız JavaScript Referans KılavuzutoString() yönteminin ayrıntılı bilgileri sağlanan:
Sayıya dönüştürme
ECMAScript, sayısal olmayan temel değerleri sayıya dönüştürmek için parseInt() ve parseFloat() iki yöntem sunar.
Böyle düşündüğünüz gibi, ilki değerleri tamsayıya dönüştürür, diğeri değerleri ondalıklı sayıya dönüştürür. Yalnızca String türüne bu yöntemleri çağırırsanız, doğru çalışırlar; diğer türler için döndükleri her zaman NaN'dır.
parseInt()
parseInt() ve parseFloat() yöntemleri, dizileri sayı değerlerine dönüştürmeden önce dikkatlice analiz eder.
parseInt() yöntemi öncelikle konum 0'daki karakteri kontrol eder, bu karakterin geçerli bir sayı olup olmadığını belirler; değilse, bu yöntem NaN döner ve diğer operasyonları daha fazla çalıştırmaz. Ancak, bu karakter geçerli bir sayıysa, bu yöntem konum 1'deki karakteri kontrol eder ve aynı testi yapar. Bu süreç, geçersiz bir sayı karakteri bulunana kadar devam eder ve bu noktada parseInt() karakterin öncesindeki diziyi sayıya dönüştürür.
Örneğin, "12345red" dizisini bir tamsayıya dönüştürmek istiyorsanız, parseInt() 12345 döndürecektir, çünkü r karakterine ulaşınca kontrol sürecini durdurur.
Dizide bulunan sayı değerleri doğru bir şekilde sayıya dönüştürülür, örneğin "0xA" doğru bir şekilde 10 sayısına dönüştürülür. Ancak, "22.5" dizisi 22 olarak dönüştürülür çünkü tamsayılar için nokta karakteri geçersiz bir karakterdir.
Aşağıdaki bazı örnekler şöyledir:
var iNum1 = parseInt("12345red"); //dönüş 12345 var iNum1 = parseInt("0xA"); //dönüş 10 var iNum1 = parseInt("56.9"); //dönüş 56 var iNum1 = parseInt("red"); //dönüş NaN
parseInt() yöntemi temel modu da vardır; ikilik, sekizlik, onaltılık veya diğer herhangi bir temsili sayı sistemini bir tamsayıya dönüştürebilir. Temel, parseInt() yönteminin ikinci parametresi tarafından belirlenir, bu yüzden onaltılık değerleri çözümlemek için parseInt() yöntemini şu şekilde çağırmanız gerekir:
var iNum1 = parseInt("AF", 16); //dönüş 175
Tabii ki, ikilik, sekizlik hatta onluk (varsayılan mod) için de parseInt() yöntemini böyle çağırabilirsiniz:
var iNum1 = parseInt("10", 2); //dönüş 2 var iNum2 = parseInt("10", 8); //dönüşüm 8 var iNum3 = parseInt("10", 10); //dönüşüm 10
Onalik bir sayıda öneden gelen 0 içeriyorsa, en iyi seçenek ondalık基数 10 kullanmaktır, böylece beklenmedik sekizlik değerlerine sahip olmazsınız. Örneğin:
var iNum1 = parseInt("010"); //dönüşüm 8 var iNum2 = parseInt("010", 8); //dönüşüm 8 var iNum3 = parseInt("010", 10); //dönüşüm 10
Bu kod parçasında, iki satır "010" dizgesini bir sayıya çözümler. İlk satır bu dizgeyi sekizlik değer olarak görür, onunla aynı şekilde çözümler. Son satır ondalık基数 10 olarak tanımlanmıştır, bu yüzden iNum3 sonunda 10 olur.
Görünüm
Bakınız JavaScript Referans KılavuzuparseInt() yöntemine ilişkin ayrıntılı bilgi sağlanmıştır:parseInt()kullanabilirsiniz.
parseFloat()
parseFloat() yöntemi parseInt() yöntemlerinin işleme şekline benzer, her bir karakteri pozisyon 0'dan başlayarak inceler, ilk geçersiz karaktere kadar bakar ve bu karakterin öncesindeki dizgeyi sayıya dönüştürür.
Ancak, bu yöntem için, ilk ortaya çıkan ondalık nokta geçerli bir karakterdir. İki ondalık nokta varsa, ikinci ondalık nokta geçersiz olarak kabul edilir. parseFloat() bu ondalık nokta öncesindeki karakterleri sayıya dönüştürür. Bu, "11.22.33" dizgesinin 11.22 olarak çözümlenir anlamına gelir.
parseFloat() yönteminin bir başka farklılığı, dizge float sayıları onalik formatta temsil etmek zorundadır, onaltılık veya sekizlik değil. Bu yöntem önceden gelen 0'ları göz ardı eder, bu yüzden sekizlik sayı 0102 102 olarak çözümlenir. Onaltılık sayı 0xA için, bu yöntem NaN döndürecektir, çünkü float sayılarında x geçerli bir karakter değildir. (Açıklama:Test edilmiştir ki, belirli tarayıcı implementasyonları 0 döndürecektir, değil NaN.)
Ayrıca, parseFloat() yöntemi de temel modeli yoktur.
Aşağıda parseFloat() yöntemini kullanma bazı örnekler verilmiştir:
var fNum1 = parseFloat("12345red"); //dönüşüm 12345 var fNum2 = parseFloat("0xA"); //dönüşüm NaN var fNum3 = parseFloat("11.2"); //dönüşüm 11.2 var fNum4 = parseFloat("11.22.33"); //dönüşüm 11.22 var fNum5 = parseFloat("0102"); //102 döner var fNum1 = parseFloat("red"); //NaN döner
Görünüm
Bakınız JavaScript Referans KılavuzuparseFloat() yönteminle ilgili ayrıntılı bilgi sağlanmıştır:parseFloat()kullanabilirsiniz.
zorunlu tür dönüşümü
Ayrıca,Zorunlu tür dönüşümü (type casting)Dönüştürmek istediğiniz değerin türünü işlemek için kullanılır. Zorunlu tür dönüşümü kullanarak belirli değerlere erişebilirsiniz, bu da onların türlerini değiştirmek zorundadır.
Yazarın Notu:cast,
ECMAScript'te kullanılabilir 3 tür zorunlu tür dönüşümü şu şekildedir:
- Boolean(value) - verilen değeri Boolean türüne dönüştürür;
- Number(value) - verilen değeri sayıya dönüştürür (tam sayı veya ondalıklı sayı olabilir);
- String(value) - verilen değeri dizeye dönüştürür;
Bu üç fonksiyondan birini kullanarak değeri dönüştürdüğünüzde, doğrudan dönüştürülen değerden oluşan yeni bir değer oluşturulur. Bu, beklenmedik sonuçlara yol açabilir.
Boolean() fonksiyonu
Dönüştürmek istediğiniz değer en az bir karakterli bir dize, 0 olmayan bir sayı veya bir nesne olduğunda, Boolean() fonksiyonu true döner. Eğer bu değer boş bir dize, sayı 0, undefined veya null ise, false döner.
Boolean türünün zorunlu tür dönüşümünü test etmek için aşağıdaki kodu kullanabilirsiniz:
var b1 = Boolean(""); //false - boş dize var b2 = Boolean("hello"); //true - boş olmayan dize var b1 = Boolean(50); //true - sıfır olmayan sayı var b1 = Boolean(null); //false - null var b1 = Boolean(0); //false - sıfır var b1 = Boolean(new object()); //true - nesne
Number() fonksiyonu
Number() fonksiyonunun zorunlu tür dönüşümü parseInt() ve parseFloat() yöntemlerinin işlemesi benzerdir, sadece tam değeri dönüştürür, kısmi değeri değil.
Unutmayın ki, parseInt() ve parseFloat() yöntemleri sadece ilk geçersiz karakterden önceki dizesi dönüştürür, bu yüzden "1.2.3" sırasıyla "1" ve "1.2" olarak dönüştürülecektir。
Number() ile zorunlu tür dönüşümü yaparken, "1.2.3" NaN döndürecektir, çünkü tamamen string değeri sayıya dönüştürülemez. Tamamen dönüştürülebilir olan string değerler için Number(), parseInt() veya parseFloat() yöntemini kullanacak karar verecektir.
Aşağıdaki tablo, farklı değerlere Number() yöntemini çağırırken ortaya çıkan durumları açıklamaktadır:
Kullanım | Sonuç |
---|---|
Number(false) | 0 |
Number(true) | 1 |
Number(undefined) | NaN |
Number(null) | 0 |
Number("1.2") | 1.2 |
Number("12") | 12 |
Number("1.2.3") | NaN |
Number(new object()) | NaN |
Number(50) | 50 |
String() fonksiyonu
Sonraki zorunlu tür dönüşüm yöntemi olan String() en basit olanıdır, çünkü her değeri stringe dönüştürebilir.
Bu tür zorunlu tür dönüşümünü gerçekleştirmek için, iletilen değerin toString() yöntemini çağırmanız yeterlidir, yani 12'yi "12" olarak, true'yu "true" olarak, false'yu "false" olarak, ve bunun gibi devam eder.
Zorunlu tür dönüşümü yapma ve toString() yöntemini çağırmanın tek farkı, null ve undefined değerlerine zorunlu tür dönüşümü yaparken hata tetiklemeksizin string oluşturabilmektir:
var s1 = String(null); // "null" var oNull = null; var s2 = oNull.toString(); // hata tetikler
ECMAScript gibi zayıf türdeki dilleri işlemek için zorunlu tür dönüşümü çok faydalıdır, ancak doğru değeri kullanmak için emin olun.
- Önceki sayfa ECMAScript Temel Türleri
- Sonraki sayfa ECMAScript Referans Türleri