Katmanya · Bestiyer
Boncuk Örümceği
string
Yuvarlak gövdeli, sekiz kısa bacaklı, iri gözlü bir örümcek. Ağından aşağı sarkar ve elinde üzerine harf boncukları dizilmiş bir ip tutar.
İki anlatım
Başlangıç
Bilgisayar bir kelimeyi saklarken harfleri bir ipe boncuk gibi dizer. Bu işi Boncuk Örümceği yapar.
İpi bir kez düğümledi mi, o ip artık hiç değişmez. “kedi”yi “Kedi” yapmak istersen örümcek eski ipi bozmaz, yeni bir ip örer. Eski ip, kimse ona bakmayana kadar yerinde durur.
İleri
Boncuk Örümceği bir string’dir: sırayla dizilmiş karakterlerden oluşan, değiştirilemeyen bir metin değeri.
Ne yapar
- Harfleri, rakamları, boşlukları ve emojileri sırayla bir ipe dizer.
- İpin uzunluğunu söyler (length), istenen sıradaki boncuğu gösterir (s[0]).
- Büyütme, kesme, değiştirme, birleştirme gibi her işte yeni bir ip örer (toUpperCase, slice, replace, +).
Ne yapamaz
- Dizdiği ipteki bir boncuğu değiştiremez, ekleyemez, çıkaramaz.
- Boncukları sayı gibi toplayamaz: "2" + "2" dört değil, "22" olur.
Kod karşılığı
let ad = "kedi";
ad[0] = "K"; // ad hâlâ "kedi" (strict mode'da TypeError)
const yeni = ad.toUpperCase(); // → "KEDİ" değil, "KEDI"
ad.toLocaleUpperCase("tr"); // → "KEDİ"
"😀".length; // → 2
İleri kurallar
- String metotları her zaman yeni bir string döner; çağrıldığı string’i değiştirmez.
- ad = ad + "!" ipi değiştirmez: değişken yeni bir ipi göstermeye başlar. Değiştirilemezlik değerle ilgilidir, const ise değişkenin başka bir değere geçmesini engeller. İkisi ayrı kurallardır.
- toUpperCase() dilden bağımsızdır: "i" büyüyünce "I" olur. Türkçe için toLocaleUpperCase("tr") gerekir. toLowerCase() de dilden bağımsızdır: "İ" noktalı bir "i" artı ayrı bir nokta olur, bu yüzden "KEDİ".toLowerCase().length 5 verir. Türkçe için toLocaleLowerCase("tr").
- length karakter değil, UTF-16 kod birimi sayar. Tek parçalı emojilerin çoğu 2 birimdir; aile ya da bayrak gibi birleşik emojiler daha fazla: "👨👩👧".length 8 verir.
Nerede kırılır
- “Harf” boncuğu. Bir boncuk bir harf gibi anlatılır ama gerçekte bir UTF-16 kod birimidir. Tek parçalı emojilerin çoğu iki boncuk tutar; aile ya da bayrak gibi birleşik emojiler daha fazla. Gülen yüz boncuğu ipte iki yer kaplar.
- Eski ip nereye gider? Anlatım eski ipin yerinde durduğunu söyler. Gerçekte onu hiçbir değişken göstermiyorsa motor belleği sonra geri alabilir. Bunu ne zaman yaptığı bizim kontrolümüzde değildir.
- Her işlem gerçekten yeni bir kopya mı? Motorlar string’leri içeride farklı biçimlerde tutabilir; her işlemin gerçekten baştan bir kopya ürettiğini iddia etmiyoruz. Kural davranışla ilgilidir: dışarıdan bakan eski ipi hiç değişmiş görmez.
Nerede yaşar
Yolculuğu Liman ile evler arasında: sayfalar denizden metin olarak gelir, evde odalara dönüşür.
JavaScript’te değer olarak Motor Dairesi’nin Öbek’inde durur; Öbek’in gövdesi derinde Bellek Ovası’ndaki işaretlerdir. Arşiv Mağaraları’na dosya olarak yazılırken boncuklar baytlara çevrilir.
Akrabaları
- Sıfır Treni: İkisi de 0’dan numaralanır. Tren vagonunu değiştirebilir, örümcek boncuğunu değiştiremez.
- Evet-Hayır Arısı: Boş ip ("") kapıda hayır sayılır.
- Çevirgen Solucan: String metotları ipi alıp yeni ip çıkaran solucanlardır.