Bu bölümde JavaScript'in temel dil bilgisi, değişken tanımları, veri türleri ve sabitleri üzerine değinilecektir.

Temeller

JavaScript çoğu söz dizimini Java'dan almıştır. Awk, Perl and Python'dan da etkilenmiştir.

JavaScript büyük-küçük harfe duyarlıdır ve Unicode karakter setini kullanır.

JavaScript'te, komutlara statements denir ve noktalı virgül (;) ile ayrılırlar. Boşluklara, tablara ve satırbaşı karakterlerine whitespace denir. JavaScript betiklerinde, kaynak metin soldan sağa taranır ve token, kontrol karakterleri, satır sonlayıcıları, yorumlar ve whitespace gibi girdi elemanları dizisine dönüştürülür. ECMAScript, bazı kelimeleri ve sabitleri tanımlamıştır ayrıca noktalı virgül (;) karakterinin komut sonlarına otomatik olarak eklenmesi için kurallar belirlemiştir. Ancak kodda herhangi bir yan etki oluşturmaması için komut sonlarına her zaman noktalı virgül konması önerilir.  Daha fazla bilgi için JavaScript'in sözcük dil bilgisi hakkındaki başvurusuna bakınız.

Yorumlar

Yorumların söz dizimi C++ ve çoğu diğer dillerde olduğu şekilde aynıdır:

// Tek satırlık yorum.
 
/* *
 * Bu ise daha uzun, 
 * çok satırlı yorum.
 */
 
/* Ancak /* iç içe yorum */  konulması söz dizimi hatasına yol açar */

Bildirimler

JavaScript'te üç çeşit bildirim vardır:

var

Bir değişkeni tanımlar, isteğe bağlı olarak değer ataması yapılır.
let
Etki alanı kod bloğudur, yerel değişken tanımlar, isteğe bağlı olarak değer ataması yapar.
const
Salt okunur değişken tanımlar.

Değişkenler

Uygulamalarınızda, verilerin sembolik birer gösterimi olarak değişkenleri kullanırsınız. Değişkenlerin isimine identifiers denir ve kesin kurallar çerçevesinde oluşturulurlar.

JavaScript'te değişken adı; bir harfle, alt tire (_) ile veya dolar işareti ($) ile başlamalıdır; ardından rakamlar gelebilir (0-9). JavaScript'in büyük-küçük harfe duyarlı olmasından dolayı, harfler büyük harf (A'dan Z'ye) ve küçük harf (a'dan z'ye) içerebilirler. 

Değişken adları için å ve ü gibi Unicode harfleri bulunan ISO 8859-1 standardındaki karakter setini kullanabilirsiniz. Ayrıca değişkenlerdeki karakterler olarak, Unicode kaçış karakterlerini kullanabilirsiniz.

Bir kaç uygun örnek: Popüler_şarkılar, jamesBond007, _isim.

Değişken tanımlama

Bir değişkeni üç yolla tanımlayabilirsiniz:

  • var kelimesi ile. Örneğin, var x = 42. Bu söz dizimi hem yerel hem global değişkenler bildirebilir.
  • Sadece değer vererek. Mesela, x = 42. Bu şekilde daima global bir değişken tanımlanır. Tanımlandığı zaman JavaScript uyarı verir. Bu yüzden böyle bir tanımlama yapmamalısınız.
  • let kelimesi ile. Örneğin, let y = 13. Bu şekilde blok seviyesinde yerel değişken tanımlanmış olur. Yani y=13 değerinin etki alanı içinde bulunduğu kod bloğu (statement) 'dur. Daha fazlası için aşağıdaki Değişkenin etki alanı kısmına bakabilirsiniz. 

Değişkenlerin değerlendirilmesi

var veya let komutuyla başlangıç değer ataması yapmadan tanımlanan değişkenler, undefined değerine sahiptirler.

Değer ataması yapılmayan bir değişkene erişilmeye çalışıldığında ReferenceError hatası alınır:

var a;
console.log("a'nın değeri " + a); // a'nın değeri undefined

var b;
console.log("b'nın değeri " + b); // b'nin değeri undefined

console.log("c'nin değeri " + c); // 
Yakalanmamış Referans Hatası: c değeri tanımlanamadı

let x;
console.log("x'in değeri " + x); // x'in değeri undefined

console.log("y'in değeri " + y); // 
Yakalanmamış Referans Hatası: y değeri tanımlanamadı
let y;

undefined'ı, bir değişkenin herhangi bir değere sahip olup olmadığını kontrol etmek için kullanabilirsiniz.  Aşağıdaki kod parçasında girdi değişkenine değer atanmamıştır ve if ifadesi doğru olarak değerlendirileceği için bunuYap(); metodu çalıştırılmış olur. 

var girdi;
if(girdi === undefined){
  bunuYap();
} else {
  sunuYap();
}

Eğer undefined değeri boolean bir kontrol deyiminde (if, while vb.) kullanılırsa  yanlış (false) çıktı verecek şekilde davranır . Örneğin, aşağıdaki kodda benimDizim değişkeni tanımsız olduğu için yap() fonksiyonu çalıştırılır:

var benimDizim = [];
if (!benimDizim[0]) yap(); 

Eğer undefined değeri sayısal bir içerikte kullanıldığında NaN (sayı değil) değerini alır.

var a;
a + 2;  // NaN sonucunu verir

null değişkeni sayısal bir içerikte kullanıldığında 0, boolean bir içerikte kullanıldığında ise false gibi davranır. Örneğin:

var n = null;
console.log(n * 32); // ekrana 0 yazdırır

Değişkenin etki alanı

Herhangi bir fonksiyon etki alanının dışında bir değişken tanımladığınız zaman, global değişken tanımlamış olursunuz. Bu sayede JavaScript dokümanı içerisinde herhangi bir kod parçası bu değişkene erişilebilir. Bir fonksiyon etki alanı içerisinde değişken tanımladığınızda local (yerel)  değişken tanımlamış olursunuz. Bu sayede değişkene sadece o fonksiyon içerisinden erişilebilir.

ECMAScript 6'dan önceki JavaScript'te, blok seviyesinde etki alanı yoktur; bilâkis, blok içerisinde tanımlanan değişken, o bloğun bulunduğu fonksiyonda (veya global etki alanında) yerel olarak tanımlanmış olur. Örneğin aşağıdaki kod ekrana 5 değerini yazdırır. Çünkü x'in etki alanı, if bloğu içerisinde değil, x'in tanımlandığı fonksiyonda (veya globalde) yer almaktadır.

if (true) {
  var x = 5;
}
console.log(x);  // 5

ECMAScript 2015'te belirlenen let ifadesi ile kullanılırsa, çıktı değişkenlik gösterebilir. Çünkü let ifadesi global alanı değil if bloğunun alanını etki alanı olarak ele alır ve y değişkeni, JavaScript tarafından tanımsız olarak değerlendirileceği için hata döndürür:

if (true) {
  let y = 5;
}
console.log(y);  // Uncaught ReferenceError: y is not defined

Değişkeni yukarı alma (hoisting)

JavaScript'teki değişkenler hakkında bir sıradışı olay ise, tanımladığınız bir değişkene daha önceki satırda hata almadan erişebiliyor olmanızdır. Bu kavram hoisting (yukarı alma) olarak bilinir; JavaScript'te tanımlanan değişkenler bir anlamda fonksiyon veya ifadenin üzerine alınmış (hoisted) olarak ele alınır. Yukarı alınan değişkenler atandıkları değer yerine undefined değerini alırlar. Hatta bu değişkeni kullandıktan sonra tekrar tanımlarsanız, yine undefined sonucunu alırsınız.

/**
 * Örnek 1
 */
console.log(x === undefined); // "true" yazar
var x = 3;

/**
 * Örnek 2
 */
// undefined değeri alacak
var degiskenim = "değerim";
 
(function() {
  console.log(degiskenim); // undefined
  var degiskenim = "yerel değerim";
})();

Üstteki örnekler bilgisayar tarafından aşağıdaki şekilde yorumlanır:

/**
 * Örnek 1
 */
var x;
console.log(x === undefined); // "true" yazar
x = 3;
 
/**
 * Örnek 2
 */
var degiskenim = "değerim";
 
(function() {
  var degiskenim;
  console.log(degiskenim); // undefined yazar
  degiskenim = "yerel değerim";
})();

Yukarı alma ile ilgili sorunların yaşanmaması için, fonksiyon içerisinde yer alan bütün değişken tanımları olabildiğince en üste taşınmalıdır. Değişken tanımlamanın en iyi yöntemi de zaten budur. Bu sayede kodun okunabilirliği artmış olur. 

ECMAScript 2015'te, let veya const ifadesi ile tanımlanan değişken, üste alınmaz. Değişken tanımından önce o değişkenin kullanılmaya çalışılırsa ReferenceError hatası ile sonuçlanır. Değişken, bloğun başlangıcından itibaren tanımının yapıldığı yere kadar ölü bölgededir.

Fonksiyonu yukarı alma

Fonksiyonlarda, yalnızca fonksiyon tanımı yukarı alınır. Fonksiyon ifadesine erişilmeye çalışıldığında ise hata oluşur.

/* fonksiyon tanımlama */

foo(); // "bar"

function foo() {
  console.log('bar');
}


/* fonksiyon ifadesi */

baz(); // TypeError: baz is not a function

var baz = function() {
  console.log('bar2');
};

Global değişkenler

Global değişkenler aslında temel bir global nesnenin özellikleridirler. Web sayfalarında bulunan global nesnenin adı window 'dur. Böylece global değişkenlere, window.variable söz dizimi kullanılarak erişilebilir.

Sonuç olarak, herhangi bir window veya iframe'deki global değişkenlere, diğer window veya iframe üzerinden değişkenin ismi kullanılarak erişilebilir. Örneğin, eğer bir dokümanda telefonNumarası isminde bir değişken tanımlanmışsa, bu değişkene iframe içerisinden parent.telefonNumarası şeklinde erişebilirsiniz.

Sabitler

const anahtar kelimesi ile sabit bir değişken oluşturabilirsiniz. Sabit değerler için söz dizimi, değişken değerleri ile aynıdır: bir harf, alt çizgi veya dolar işareti ile başlamalıdırlar, devamında ise alfabetik, sayısal veya alt çizgi gibi karakterler gelebilir.

const PI = 3.14;

JavaScript kodu çalışırken bir sabitin değeri, atama yapılarak değiştirilemez ve sabit tekrar tanımlanamaz. Ayrıca sabitlere başlangıçta tanımlanırken bir değer atanması zorunludur.

Sabitlerin etki alanı let bloğunun etki alanındaki değişkenler ile aynıdır. Eğer const ifadesi çıkarılırsa, ifade artık değişken haline gelir.

Bir etki alanında, halihazırda bir fonksiyon veya değişken varsa, aynı isimli sabit tanımlamak hataya yol açar. Örneğin:

// BU HATAYA NEDEN OLUR
function f() {};
const f = 5;

// BU DA HATAYA NEDEN OLUR
function f() {
  const g = 5;
  var g;
}

Sabit bir nesneye atanan özellikler diğer fonksiyonların kullanımına karşı korunmamışlardır ve nesnenin kendisi sabit olmasına rağmen değişken değerler alabilirler. Bu sebeple aşağıdaki ifade sorunsuz bir şekilde çalışır.

const BENIM_NESNEM = {"anahtar": "değer"};
BENIM_NESNEM.anahtar = "diğerDeğer";

Veri yapıları ve tipleri

Veri tipleri

Son yayınlanan ECMAScript standardı ile yedi veri tipi tanımlanabilir:

  • Altı adet veri türü primitives'dir:
    • Boolean. true ve false.
    • null. null değeri belirten özel anahtar kelime. JavaScript büyük-küçük karaktere duyarlı olduğu için, null ifadesi NullNULL, veya diğer değişkenler ile aynı değildir.
    • undefined. Değeri tanımsız olan özellikler için undefined'tır.
    • Number. 42 ya da 3.14159.
    • String. "Zafer"
    • Symbol (ECMAScript 6 ile yeni geldi). Özellikleri eşsiz (unique) ve değiştirilemez (immutable) olan nesnelerdir.
  • ve Object veri türü

Veri tipleri nispeten az miktarda olmalarına rağmen, uygulamalarınızla yararlı işlevler oluşturmanıza olanak sağlarlar. Objects (nesneler) ve functions (fonksiyonlar) dilin diğer temel elemanlarıdırlar. Nesneleri, değerleriniz için isimlendirilmiş kutular, fonksiyonları (functions) ise uygulamanızın gerçekleştirebileceği işlevler olarak düşünebilirsiniz.

Veri tipi dönüşümü

JavaScript dinamik tipli bir dildir. Bunun anlamı, bir değişken tanımlarken, veri tipini belirtme zorunluluğunuzun olmaması ve değişkenin veri tipinin çalışma esnasında ihtiyaç olunan tipe otomatik olarak dönüştürülmesidir. Örneğin sayısal bir değişken tanımlayabilirsiniz:

var yanit = 42;

Ve sonra, aynı değişkene string bir değer atayabilirsiniz:

yanit = "Hoşçakal, balık için teşekkürler...";

JavaScript dinamik tipli olduğu için, bu atama bir hata vermez.

Bir string ve sayının toplama işlemine konulması ile JavaScript otomatik olarak sayısal değeri string ifadeye çevirir ve eklenecek string ile birleştirir. Örneğin aşağıdaki ifadelere bakalım:

x = "Cevap " + 42 // "Cevap 42"
y = 42 + " cevaptır." // "42 cevaptır."

Toplama işlemi dışındaki diğer işlemlerde JavaScript otomatik olarak tür dönüşümü yapmaz. Örneğin:

"37" - 7 // 30
"37" + 7 // "377"

String ifadelerin sayısal değerlere dönüştürülmesi

Bellekte sayısal bir ifadeyi temsil eden bir string'in olduğu durumlarda tip dönüşümü yapmak için aşağıdaki metodları kullanabilirsiniz: 

parseInt fonksiyonu sadece tam sayı döndürür, bu yüzden ondalık sayılarla kullanıldığında ondalık kısmını atar. Buna ek olarak parseInt'in en uygun kullanımlarından biri de sayının hangi tabanda (2'lik, 10'luk, 16'lık vb.) yazılabileceğini parametre olarak fonksiyona verebilmenizdir. Taban parametresi hangi sayısal sistemin kullanılacağının belirlenmesini sağlar.

String ifadelerin, sayısal ifadelere dönüştürülmesinin diğer bir yolu da, string ifadenin başına + operatörünün eklenmesidir:

"1.1" + "1.1" = "1.11.1"
(+"1.1") + (+"1.1") = 2.2   
// Not: parantezler gösterim kolaylığı için konulmuştur, zorunlu değildir.

Değişken değerleri

JavaScript'te değişkenlerin temsil edilmesi için değerler kullanırsınız. Bunlar, kodunuzda değişkenlere = operatöründen sonra atadığınız değerlerdir. Bu kısımda aşağıdaki değer tiplerini inceleyeceğiz:

Dizi değerleri

Bir dizi değeri 0 veya daha fazla ifadeden oluşan liste biçimindedir, liste başında ve sonunda listeyi açıp/kapatan köşeli parantezler [ ] bulunur. Bir dizi oluşturup bu diziye değerler atadığınızda, belirlediğiniz değerleri kendi elemanı olarak barındıran bir dizi üretilir ve dizinin uzunluğu belirlediğiniz değer sayısı kadardır.

Aşağıdaki örnekte, 3 elemanı barındıran ve bu nedenle 3 uzunluğunda olan kahveler isimli bir dizi oluşturulmaktadır:

var kahveler = ["Türk kahvesi", "Espresso", "Mocha"];

Not : Bir dizi değeri, bir nesne başlatıcısı türündedir. Dahası için bkz: Nesne başlatıcılarının kullanımı.

Eğer bir dizi, üst-seviye betikte sabit değer kullanarak oluşturulmuşsa JavaScript, bu diziyi içeren her ifadeyi çalıştırdığında diziyi yorumlar. Buna ek olarak, fonksiyon içerisinde tanımlanan diziler, her fonksiyon çağrımında yeni bir dizi olarak bellekte oluşturulur.

Dizi değerleri ayrıca Array nesneleridirler. Detaylı bilgi için Array ve Index'li koleksiyonlar kısmına bakınız.

Dizi değerleri arasında bulunan fazladan virgül

Dizi tanımlarken her değeri belirlemek zorunda değilsiniz. Eğer iki tane virgülü art arda koyarak dizi oluşturursanız, virgüller arasında kalan tanımlanmayan her değer için undefined değeri üretilir. Aşağıdaki örnekte bir balık dizisi oluşturulmaktadır:

var balik = ["Japon", , "Melek"];

Bu dizi değerlere sahip 2 elemana ve bir tane boş elemana sahiptir (balik[0] = "Japon", balik[1]undefined, ve balik[2] = "Melek").

Eğer dizideki elemanların sonuna virgül koyarsanız virgül, JavaScript tarafından görmezden gelinir. Aşağıdaki örnekte bulunan dizinin uzunluğu üçtür. dizi[3]'ü ifade eden herhangi bir eleman bulunmamaktadır. Listedeki diğer virgüller, undefined değerine sahip yeni bir elemanı ifade eder. 

Not : Sona konan virgüller, eski versiyonlu tarayıcılarda hatalara neden olur. Yapılacak en doğru şey, dizi sonlarında kullanılan virgüllerin kaldırılmasıdır.

var dizi = ['ev', , 'okul', ];

Aşağıdaki örnekte oluşturulan dizinin uzunluğu, dizi[0] ve dizi[2] değerleri tanımlanmadığı halde 4'tür.

var dizi = [ , 'ev', , 'okul'];

Aşağıdaki bir diğer örnekte, dizinin uzunluğu, dizi[1] ve dizi[3] değerleri tanımlanmadığı halde yine 4'tür. Sadece son virgül görmezden gelinir.

var dizi = ['ev', , 'okul', , ];

Ekstra virgüllerin davranışlarının kavranılması, JavaScript dilinin öğrenilmesi için çok önemlidir, ancak kendi kodunuzu yazarken tanımsız elemanları undefined olarak dizi içerisinde belirlemeniz, kodunuzun okunabilirliğini ve bakım yapılabilirliğini önemli ölçüde arttıracaktır.

Boolean değerleri

Boolean tipinde iki çeşit değer bulunur: true (doğru) ve false (yanlış).

İlkel Boolean değerleri olan true ve false ile Boolean nesnesi olan true ve false değerlerini karıştırmayınız. Boolean nesnesi, ilkel olan Boolean veri tipinin alınması ve üzerine bazı ek özellikler getirilmesi ile oluşturulmuştur. Daha fazlası için bkz: Boolean.

Tam sayılar

Tam sayılar; ikilik (binary) (2 tabanında), sekizlik (octal) (8 tabanında), onluk (decimal) (10 tabanında), ve onaltılık (hexadecimal) (16 tabanında) temsil edilebilirler.

  • Başında 0b (veya 0B) yer alan tam sayı ifadeleri ikiliktirler. İkilik tam sayılar sadece 0 ve 1 rakamlardan oluşurlar.
  • Başında 0 (sıfır) yer alan tam sayı ifadeleri sekizliktirler. Sekizlik tamsayılar sadece 0-7 arasındaki rakamlardan oluşurlar.
  • Onluk tam sayı değeri, 0 (sıfır) ile başlamayan rakamlardan oluşurlar.
  • Başında 0x (veya 0X) yer alan tam sayı ifadeleri onaltılıktırlar. Onaltılık tamsayılar, 0-9 arasındaki rakamları içerebildiği gibi aynı zamanda a-f veya A-F arasındaki harfleri de barındırabilirler.

Bazı örnek tamsayılar:

0, 117 and -345 (onluk, 10 tabanında)
015, 0001 and -077 (sekizlik, 8 tabanında) 
0x1123, 0x00111 and -0xF1A7 (onaltılık, "hex" veya 16 tabanında)
0b11, 0b0011 and -0b11 (ikilik, 2 tabanında)

Daha fazlası için bkz: Sayısal değerler ve sözsel gramer başvurusu.

Ondalıklı değerler

Bir ondalıklı değer aşağıdaki kısımları içerebilir:

  • İşaretli olabilen bir onluk sayı ("+" veya "-" ile başlayabilir),
  • Bir nokta ("."),
  • Ondalık (noktadan sonra diğer onluk sayı),
  • Bir katsayı.

Katsayı kısmı  bir "e" veya "E" karakteridir ve devamında işaretli olabilen bir tamsayı gelir. Ondalıklı değerin tanımlanabilmesi için en az bir rakam ve devamında ondalıklı sayı ve katsayı "e" (veya "E") içermelidir.

Özetle söz dizimi aşağıdaki şekildedir:

[(+|-)][rakamlar][.rakamlar][(E|e)[(+|-)]rakamlar]

Örneğin:

3.1415926
-.123456789
-3.1E+12
.1e-23

Nesne değerleri

Bir nesne değeri, süslü parantezlerle {} çevrili sıfır veya daha fazla özellik ismi ve bu özellikler ile ilişkili değerleri içeren bir listeden oluşur. Bir kod satırının başlangıcında değişken ismi olmadan sadece süslü parantezler ile başlayarak bir nesne oluşturmamanız gerekmektedir. Eğer oluşturursanız, JavaScript nesne başlangıcındaki { karakterini, bir kod bloğuna başlangıç yapılıyormuş gibi yorumlar ve bunun sonucunda ya bir hata mesajı alırsınız, ya da yazdığınız kod beklediğiniz şekilde çalışmaz.

Aşağıda, nesne değerini içeren bir örnek bulunmaktadır. otoGaleri nesnesinin ilk elemanı, "Fiat" değerini barındıran arabam isminde bir özelliği tanımlamaktadır; ikinci elemanı arabaAl özelliğidir ve function (araçTipleri("Honda")) fonksiyonu çalıştırıldıktan hemen sonra fonksiyonun sonucunu içerir; üçüncü eleman sporArabaAl özelliğidir, halihazırda varolan hayalimdekiAraba değişkenini kullanır.

var hayalimdekiAraba = "Bugatti";

function araçTipleri(markaAdı) {
  if (markaAdı == "Wolksvagen") {
    return markaAdı;
  } else {
    return "Üzgünüz, malesef " + markaAdı + " marka araba elimizde bulunmamaktadır.";
  }
}

var otoGaleri = { 
    arabam: "Fiat", 
    arabaAl: arabaTipleri("Wolksvagen"), 
    sporArabaAl: arabaTipleri(hayalimdekiAraba)
};

console.log(otoGaleri.arabam);   // Fiat
console.log(otoGaleri.arabaAl);  // Wolksvagen
console.log(otoGaleri.sporArabaAl); // Üzgünüz, malesef Bugatti marka araba elimizde bulunmamaktadır.

Ek olarak, sayısal veya string bir değer, özellik adı veya iç içe olan diğer bir nesnenin adı yerine kullanabilir. Aşağıdaki örnekte bu seçenekleri görebiliriz:

var otoGaleri = { 
    arabalar: {s: "Saab", "j": "Jeep"}, 
    7: "Mazda" 
};

console.log(otoGaleri.arabalar.j); // Jeep
console.log(otoGaleri[7]); // Mazda

Nesne özelik adları boş bir string de dahil olmak üzere herhangi bir string ifade olabilirler. Eğer özellik adı geçerli bir JavaScript identifier değilse, tırnak içinde yazılması gereklidir. Buna ek olarak geçersiz olan özellik adlarına, nokta (.) ile erişim yapılamaz, bunun yerine dizi tarzında köşeli parantezler([]) kullanılır:

var geçersizÖzellikAdlarıÖrnek = {
  "": "Boş bir string",
  "!": "Ateş!"
}
console.log(geçersizÖzellikAdlarıÖrnek."");   // SyntaxError: Unexpected string
console.log(geçersizÖzellikAdlarıÖrnek[""]);  // Boş bir string
console.log(geçersizÖzellikAdlarıÖrnek.!);    // SyntaxError: Unexpected token !
console.log(geçersizÖzellikAdlarıÖrnek["!"]); // Ateş!

Diğer örnekler:

var nesne = {a: "armut", 2: "iki"};
console.log(nesne.a);    // armut
console.log(nesne[2]);   // iki
//console.log(nesne.2);  // Error: missing ) after argument list
//console.log(nesne[a]); // Error: a is not defined
console.log(nesne["a"]); // armut
console.log(nesne["2"]); // iki

Düzenli İfade (RegExp) değerleri

Bir düzenli ifade değeri bölü (/) karakterleri arasında ifade edilir. Aşağıda, örnek bir düzenli ifade bulunmaktadır:

var re = /ab+c/;

String değerleri

Bir string değer çift tırnak (") veya tek tırnak (') arasında bulunan sıfır veya daha fazla karakterlerin yer almasıyla oluşur. Bir string değer aynı tip tırnak ile sonlanmalıdır; bu nedenle karakterleri kapsayan tırnaklar ya çift tırnak ya da tek tırnak ikililerinden oluşmalıdır. Aşağıdaki örnekte string değerler ifade edilmiştir:

"elma"
'armut'
"1234"
"bir satır \n diğer satır"
"Zafer'in kedisi"

String nesnesinin herhangi bir fonksiyonuna, string değerin sonuna nokta koyarak erişebilir ve çalıştırabilirsiniz—JavaScript otomatik olarak string değeri geçici bir String nesnesine dönüştürür, metodu çağırır, ve sonra oluşan geçici String nesnesini hafızadan siler. Ayrıca String.length özelliğini de string değerinin sonuna .length ekleyerek kullanablirsiniz:

console.log("Zafer'in kedisi".length); 
// Boşluk da dahil olmak üzere, string içerisindeki tüm sembollerin sayısını ekrana yazar.
// Ekrana yazılan değer: 15

String nesnesine hususi olarak ihtiyaç duymadığınız durumlarda, string değerleri kullanmanız gerekir. String nesneler için bkz: String.

Özel karakterlerin string değerlerde kullanımı

String değerler oluştururken, her zamanki kullandığınız karakterlere ek olarak aşağıdaki şekilde özel karakterler de kullanabilirsiniz:

"bir satır \n diğer satır"

Aşağıdaki tabloda, JavaScript string değerleri içerisinde kullanabileceğiniz özel karakterler listelenmiştir: 

Tablo: JavaScript özel karakterleri
Karakter Anlamı
\0 Boş değer
\b Geri silme
\f Form beslemesi
\n Yeni satır
\r Enter karakteri
\t Tab
\v Dikey tab
\' Kesme işareti veya tek tırnak
\" Çift tırnak
\\ Ters bölü (\) karakteri
\XXX 3 adet sekizlik rakamı barındırabilen, ve 0-377 arasındaki XXX değerlerinin Latin-1 kodlaması ile oluşturulduğu karakterdir. Örneğin, sekizlik \251 değeri telif hakkı sembolünü (©) ifade eder.
\xXX

2 adet onaltılık karakteri barındırabilen ve 00-FF arasındaki XX değerlerinin Latin-1 kodlaması ile oluşturduğu karakterdir. Örneğin, onaltılık \xA9 değeri telif hakkı sembolünü (©) ifade eder.

\uXXXX

4 adet onaltılık karakteri barındırabilen XXXX değerleri ile belirlenen Unicode karakteridir. Örneğin \u00A9 karakteri, Unicode olarak telif hakkı sembolünü (©) ifade eder. Bkz: Unicode kaçış karakterleri.

\u{XXXXX} Unicode kod noktası kaçış karakterlerini ifade eder. Örneğin, \u{2F804} karakteri, \uD87E\uDC04 ile aynı sembolü ifade eder.

Kaçış karakterleri

Üstteki tabloda yer almayan karakterlerin başına ters bölü işaretinin konulduğunda, ters bölü işareti göz ardı edilir, fakat bu tarz kullanım artık rafa kaldırılmıştır ve kullanımından kaçınılması gerekir. 

Bir string değer içerisinde tırnak işaretini kullanabilmeniz için, karakterin başına ters bölü işareti eklemeniz gerekir. Bu kullanıma tırnaktan kaçış (escaping the quotation mark) denir. Örneğin:

var alıntı = "Sebahattin Ali'nin \"Kürk Mantolu Madonna\" adlı kitabını okudu.";
console.log(alıntı);

Ekran çıktısı aşağıdaki gibi olacaktır:

Sebahattin Ali'nin "Kürk Mantolu Madonna" adlı kitabını okudu.

String değer içerisinde ters bölü işaretini kullanabilmeniz için, tekrar bir ters bölü karakteri daha eklemeniz gerekir. Örneğin c:\temp isimli dosya yolunu, bir string olarak aşağıdaki şekilde ifade edebiliriz:

var geçiciDosyalarDizini = "c:\\temp";

Uzun string değerleri satır satır yazmak için tırnak artı tırnak (" + ") işaretleri ile eklemek yerine satır sonuna sadece ters bölü işareti ekleyebilirsiniz. Ters bölü ve satır sonu karakterleri, string değerinden çıkarılmış olarak tek satır halinde döndürülür.

var metin = "Bu metin \
birçok \
satıra ayrılarak \
oluşturulmuştur."
console.log(metin);  // Ekran çıktısı: Bu metin birçok satıra ayrılarak oluşturulmuştur.

JavaScript'in paragrafları tanımlamak için bir söz dizimi bulunmamasına rağmen, her satır sonuna  \n\ karakterleri ekleyerek paragraf oluşturabilirsiniz:

var şiir = 
"Sana gitme demeyeceğim \n\
Ama gitme Lavinia \n\ 
Adını gizleyeceğim \n\
Sen de bilme Lavinia.";

Daha fazlası

Bu bölümde, tanımlamalar ve türler için temel söz dizimleri konuları üzerinde durulmuştur. JavaScript'in dil oluşturucularıyla ilgili daha fazla bilgi edinmek için bu rehberde bulunan aşağıdaki bölümleri inceleyebilirsiniz:

Sonraki bölümde, kontrol akışının oluşturulması ve hata yakalamaya göz atacağız.

Document Tags and Contributors

Tags: 
 Contributors to this page: pasalog, fanatikhamsi, ozcanzaferayan
 Last updated by: pasalog,