ECMAScript Temel Türleri

ECMAScript 5 tür temel türü (primitive type) içerir, yani Undefined, Null, Boolean, Number ve String.

typeof operatörü

typeof operatörü bir parametreye sahiptir, yani kontrol edilecek değişken veya değer. Örneğin:

var sTemp = "test string";
alert (typeof sTemp);    // Çıktı "string"
alert (typeof 86);    // Çıktı "number"

Değişken veya değere typeof operatörü çağrıldığında aşağıdaki değerlerden biri döndürülür:

  • undefined - Eğer değişken Undefined türünde ise
  • boolean - Eğer değişken Boolean türünde ise
  • number - Eğer değişken Number türünde ise
  • string - Eğer değişken String türünde ise
  • object - Eğer değişken bir referans türü veya Null türünde ise

Açıklama:Sorabilirsiniz, neden typeof operatörü null değeri için "Object" döndürür. Bu, aslında JavaScript'in ilk uygulamasında bir hata ve ECMAScript tarafından devralındı. Şimdi, null nesnelerin yer tutucusu olarak kabul ediliyor ve bu çelişkiyi açıklıyor, ancak teknik olarak hala temel bir değerdir.

Undefined türü

Aşağıda bahsedildiği gibi, Undefined türü sadece bir değer içerir, yani undefined. Bildirilen değişken初始化 edilmediğinde, bu değişkenin varsayılan değeri undefined'dir.

var oTemp;

Önceki satırda değişken oTemp tanımlandı, başlangıç değeri verilmedi. Bu değişken "undefined" değeri ile atlanır, yani "undefined" türünün ifadesi. Bu değişkenin değeri undefined olup olmadığını test etmek için aşağıdaki kod parçasını kullanabilirsiniz:

var oTemp;
alert(oTemp == undefined);

Bu kod "true" yazdırır, bu da bu iki değerin gerçekten eşit olduğunu gösterir. Ayrıca typeof işlevi ile bu değişkenin değeri undefined olarak gösterilebilir:

var oTemp;
alert(typeof oTemp); // Çıktı: "undefined"

İpucu:Değer undefined, tanımlanmamış değere farklıdır. Ancak typeof işlevi bu iki değeri gerçekten ayırmaz. Aşağıdaki kodu göz önünde bulundurun:

var oTemp;
alert(typeof oTemp);  // Çıktı: "undefined"
alert(typeof oTemp2);  // Çıktı: "undefined"

Yukarıdaki kod iki değişkene "undefined" yazdırır, ancak sadece oTemp2 tanımlanmamıştır. oTemp2'ye typeof dışında diğer bir işlev kullanıldığında hata verir, çünkü diğer işlevler sadece tanımlanmış değişkenler üzerinde kullanılabilir.

Örneğin, aşağıdaki kod hata çıkarabilir:

var oTemp;
alert(oTemp2 == undefined);

Bir fonksiyonun açıkça bir döndürme değeri olmadığında, döndürdüğü de "undefined" değeridir, aşağıdaki gibi görünüyor:

function testFunc() {
{}
alert(testFunc() == undefined);  // Çıktı: "true"

Null türü

Tek bir değeri olan başka bir tür de Null'dur, yalnızca null değerine sahiptir, yani bu değer ifadesi. Değer undefined aslında null değerinden türetilmiştir, bu yüzden ECMAScript bunları eşit olarak tanımlar.

alert(null == undefined);  // Çıktı: "true"

Bu iki değer eşit olsa da, anlamları farklıdır. undefined, bir değişkenin tanımlandığı ancak değerlendirilmemiş olduğunda bu değişkene verilen değeri ifade eder, null ise henüz mevcut olmayan bir nesneyi belirtmek için kullanılır (typeof işlevi hakkında kısa bir şekilde bahsedilmiştir). Bir fonksiyon veya yöntemin döndürebileceği bir nesne ise, bu nesne bulunamadığında genellikle null döndürülür.

Boolean türü

Boolean türü, ECMAScript'te en sık kullanılan türlerden biridir. İki değeri var: true ve false (yani iki Boolean ifadesi).

False 0'a eşit olmasa bile, 0'nın gerektiğinde false olarak dönüştürülebilir, bu da Boolean ifadelerinde her ikisini de güvenli kullanmak anlamına gelir.

var bFound = true;
var bLost = false;

Number türü

ECMA-262'de tanımlanan en özel tür Number türüdür. Bu tür hem 32 bitlik tam sayıları hem de 64 bitlik ondalık sayıları ifade edebilir.

Doğrudan girilen (diğer bir deyişle başka bir değişkende erişilmiyen) herhangi bir rakam, Number türündeki ifadeler olarak kabul edilir. Örneğin, aşağıdaki kod, tam sayı değeri olan bir değişken tanımlar, bu değerin ifadesi 86'dır:

var iNum = 86;

Sekizli sayılar ve onaltılı sayılar

Tamsayılar, sekizli (8 tabanlı) veya onaltılı (16 tabanlı) ifadeler olarak da ifade edilebilir. Sekizli ifadelerin başında 0 olmalı ve ardından herhangi bir sekizli rakam (0-7) gelmeli. Aşağıdaki kod bunu gösterir:

var iNum = 070;  //070 ondalık 56'ya eşittir

Onaltılı ifadeler oluşturmak için, ilk rakam 0 olmalı, ardından x harfi gelmeli ve ardından herhangi bir onaltılı rakam (0-9 ve A-F) gelmeli. Bu harfler büyük veya küçük olabilir. Örneğin:

var iNum = 0x1f;  //0x1f ondalık 31'ye eşittir
var iNum = 0xAB;  //0xAB ondalık 171'ye eşittir

İpucu:Tüm tam sayılar sekizli veya onaltılı ifadeler olarak ifade edilebilir, ancak tüm matematiksel işlemler ondalık sonuçlar döndürür.

Tamsayı

Tamsayı değerlerini tanımlamak için, ondalık nokta ve ondalık nokta sonrası bir rakam içermelisiniz (örneğin, 1.0 yerine 1 kullanılmaz). Bu, tamsayı ifadesi olarak kabul edilir. Örneğin:

var fNum = 5.0;

Tamsayı ifadelerinin ilginç yanı, onları hesaplamadan önce gerçekten string olarak sakladığıdır.

Bilimsel sayısal ifade

Çok büyük veya çok küçük sayıları, bilimsel sayısal ifade ile ifade edebilirsiniz. Bir sayıyı sayı (ondalık sayılar dahil) ile e (veya E) ekleyerek, ardından 10'un katları ile çarpma ekleyerek ifade edebilirsiniz. Örneğin:

var fNum = 5.618e7

Bu sembol, sayı 56180000'ı temsil eder. Bilimsel sayısal ifadeyi hesaplama ifadesine dönüştürdüğünüzde bu değeri elde edebilirsiniz: 5.618 x 107

Çok küçük sayıları da bilimsel sayısal ifade ile ifade edebiliriz, örneğin 0.00000000000000008 8-e olarak ifade edilebilir17(Burada, 10 -17'inci köküne yükseltilmiştir, bu da 10'un 17 kez bölünmesi gerektiği anlamına gelir)。ECMAScript, 6 veya daha fazla öncü 0 ile başlayan ondalık sayıları bilimsel sayıya dönüştürür.

İpucu:64 bit IEEE 754 biçiminde de sayısal değerler saklanabilir, bu da ondalık değerlerin en fazla 17 ondalık basamağa sahip olacağı anlamına gelir. 17 basamağın sonrası kesilir, bu da bazı küçük matematiksel hatalara neden olur.

Özel Number değerleri

Birkaç özel değer de Number türünde tanımlanmıştır. İlk ikisi Number.MAX_VALUE ve Number.MIN_VALUE'dır, bu da Number değer kümesinin dış sınırlarını tanımlar. Tüm ECMAScript sayıları bu iki değer arasında olmalıdır. Ancak, hesaplanan sayısal sonuçlar bu iki değer arasında olmayabilir.

Hesaplanan sayı Number.MAX_VALUE'dan büyük olduğunda, Number.POSITIVE_INFINITY değerine atanır, bu da artık bir sayı değeri olmadığı anlamına gelir. Aynı şekilde, Number.MIN_VALUE'dan küçük olan hesaplanan sayılar Number.NEGATIVE_INFINITY değerine atanır, bu da artık bir sayı değeri olmadığı anlamına gelir. Hesaplamaların sonuçları sonsuz değer döndürdüğünde,生成的结果不能再用于其他计算。

Aslında, sonsuz değerleri temsil eden özel değerler de vardır (tahmin ettiğiniz gibi), yani Infinity. Number.POSITIVE_INFINITY'nun değeri Infinity'dir. Number.NEGATIVE_INFINITY'nun değeri -Infinity'dir.

Sonsuz sayılar hem pozitif hem de negatif olabilir, bu yüzden bir sayının sınırsız olup olmadığını belirlemek için bir yöntem kullanılabilir (sadece her bir sonsuz sayıyı ayrı ayrı test etmek yerine). Herhangi bir sayıya isFinite() yöntemini çağırarak, sayının sonsuz olmadığını doğrulamak için kullanılabilir. Örneğin:

var iResult = iNum * some_really_large_number;
if (isFinite(iResult)) {
    alert("finite");
{}
else {
    alert("infinite");
{}

Son özel değer NaN (Not a Number), sayısal olmayan bir ifadeyi temsil eder. NaN, garip bir özel değerdir. Genel olarak, bu tür durumlar, String, Boolean gibi türlerin dönüşümü başarısız olduğunda ortaya çıkar. Örneğin, 'blue' kelimesini sayısal bir değere dönüştürmek başarısız olur, çünkü ona eşdeğer bir değer yoktur. sonsuz gibi, NaN de hesaplamalarda kullanılamaz. NaN'nın bir diğer garip özelliği, kendisiyle eşit olmamasıdır, bu da aşağıdaki kodun false döndüğü anlamına gelir:

alert(NaN == NaN);  // Çıktı "false"

Bu nedenle, NaN değeri kullanmaktan kaçınılması önerilir. Fonksiyon isNaN(), oldukça iyi çalışır:

alert(isNaN("blue"));  // Çıktı "true"
alert(isNaN("666"));  // Çıktı "false"

String Türü

String türünün benzersizliği, belirli bir boyutta olmayan tek bir temel tür olmaktır. 0 veya daha fazla Unicode karakteri (Unicode, bu eğitimde daha sonra tartışılacak olan uluslararası karakter kümeleri) saklayabilir. 16 bitlik bir tamsayı ile temsil edilir (Unicode, uluslararası karakter kümeleri).

Dizgedeki her karakterin belirli bir konumu vardır, ilk karakter 0'dan başlar, ikinci karakter 1'dir, bunlara göre devam eder. Bu, dizgedeki son karakterin konumunun dizgenin uzunluğundan 1 az olduğunu anlamına gelir:

Dizginin uzunluğu ve karakter konumu

Dizge dilimleri, çift tırnaklar ("), tek tırnaklar ('), Java'da dizi tırnakları ("), karakter tırnakları ('), ECMAScript'te herhangi bir dilim türünü kullanabilir. Örneğin, aşağıdaki iki satır geçerlidir:

var sColor1 = "red";
var sColor2 = 'red';

String türü, Java, C ve Perl geliştiricilerinin çok iyi bildiği bazı karakter dilimlerini içerir.

Aşağıda ECMAScript'in karakter dilimlerini sıraladık:

dilim anlam
\n yeni satır
\t tab
\b boşluk
\r enter
\f sayfa geçişi
\\\ çapraz çizgi
\' tek tırnak
\" çift tırnak
\0nnn sekizli kod nnn belirlediği karakteri (n 0 ile 7 arasında bir sekizli sayı olan
\xnn onaltılık kod nn belirlediği karakteri (n 0 ile F arasında bir ondalık sayı olan
\unnnn onaltılık kod nnnn belirlediği Unicode karakteri (n 0 ile F arasında bir ondalık sayı olan