Anladığım Kadarıyla Javascript

Betül Uzun
5 min readOct 2, 2019

--

#1 Javascript’e Başlıyoruz

Javascript, Frontend geliştiricisinin bilmesi gereken kutsal üçlüden (HTML, CSS, Javascript) birisi ve en azılısı (benim için). http://javascript.info sitesini kurcalamaya başladığımda küçüklü büyüklü bazı temel kısımları bilmediğimi fark edince kendime bir not defteri tutmaya karar verdim. Orası da neden medium.com olmasın ki dedim. Javascript hakkında 6646516549846516 adet kaynaktan farkı ise kendi anlatım dilimi kullanacak olmam. Sonra ‘Bu ne diyo ya?!’ demeyin. Neticede benim not defterim kardeşim. Neyse biraz yükseldim, pardon. O zaman eeeeen başından başlayalım.

Dünya bir toz bulutuydu ve ……….. (bu espriyi yaptığım için özür dilerim.)

But I will, one day…

Javascript Nedir, Nereden Gelmiştir, Kimlerdendir?

Javascript başlangıçta web sayfalarını ‘canlandırmak’ için oluşturulmuş. Zaten ben de bu konulara yeni başlayan arkadaşlara anlatırken şöyle anlatırdım:

  1. HTML : İnsan iskeleti olarak tanımlayabiliriz. Yani kısaca tarayıcıya diyoruz ki ‘abi buraya kafa gelecek, bak burda ayak olacak karıştırmayalım, göz yuvalarını da ayarladım yanlış yere koymayalım baksana oyuklara, vb…’
  2. CSS : İnsanımıza görünüş kazandırdığımız kod kısmı. ‘Burnu hokka yapalım bunun estetikle uğraşmasın. Ama boyu kısaltalım, bi tık daha kısaltalım, bir tık daha. Heh tamam oldu.’
  3. Javascript : İnsanımıza hareket kazandırıyoruz. ‘Koşabilsin ama dans edemesin bu.’ gibi…

Sık sık ‘script yazdım, yazdın mı..’ gibi cümleler duymuş olabilirsiniz. Ben başlarda anlamıyordum açıkcası ama bu bizim javascript kodlarıymış. (Zaten içinde de geçiyor ama bazen insanın basireti kapanıyor.) Scriptlerimiz düz metinlerden oluşuyor ve derlenmeye gerek olmadan tarayıcı tarafından tanınıyor. Müthiş bi şey bu! Ama tabi gelişmiş frameworklerde bol bol derliyoruz arkadaşlar, yapacak bir şey yok. Ama elbette çıktısını canımız tarayıcılarımız tanıyor.

Gelelim en önemli kısıma: Javascript buysa, Java nedir? Biri birinin yavrusu gibi görünse de ikisi tamamiyle ayrı dünyaların insanları.

Dokümanda yazana göre hikaye şöyle:

Javascript ilk yazıldığında ismi ‘LiveScript’miş. Java popüler olunca şöhretinden yararlanmak için Javascript olarak değiştirilmiş. Elbette yıllar içinde gelişen Javascript artık tamamen Java’dan bağımsız ECMAScript’e dönüşmüş… (Dönüşür dönüşmez isim de değiştirilmiş yani bilemiyorum, artık burnu havada birisi diyebiliriz.)

Javascript Motoru

Javascript güzeldir, iyidir ama nasıl çalışıyor diye insan merak ediyor. Sanıyoruz ki sadece tarayıcılarda çalışıyor. Aslına bakarsanız Javascript Motoru (The Javascript Engine) olan her yerde çalışıyor. Tarayıcılarda bu arkadaş farklı farklı isimlendirilmiş:

  • V8 — Chrome and Opera
  • SpiderMonkey — in Firefox
  • Trident and Chakra — different versions for IE
  • ChakraCore — Microsoft Edge
  • Nitro and SquirrelFish — Safari

Bunlar nerede işimize yarar? Misal ‘X özelliği V8 tarafından destekleniyor’ diye bir ibare görürsek hemen yapıştırıyoruz: Chrome ve Opera’da çalışıyor bu. Ve ortamlarda havamız oluyor. (😎)

Javascript Motorları biraz çalışması karmaşık ancak basit haliyle şu şekilde:

1 — Sevgili motorumuz script’i okur.

2 — Makine diline çevirir (compile).

3 — Makine kodu da oldukça hızlı bir şekilde çalışır.

Buradan kolaymış gibi göründü ancak karmaşık bazı işlemlerden geçiyor biricik script kodlarımız. Bu işlemi anlatıp aydınlatacak biri olursa seve seve dinlerim:)

Not: Link’e tıklayarak daha ayrıntılı bilgiye sahip olabilirsiniz, bu karmaşık işlemleri anlamak için:)

Javascript, Tarayıcı da Neler Yapabilir ki?

Beğendik

Javascript güvenli programlama dili olarak tanımlanıyor. Çünkü memory’ye ya da CPU’ya erişme gibi niyeti bulunmamakta. Sadece tarayıcılar için tasarlandığı için böyle bir kaygısı da yok zaten.

Tarayıcı üzerindeki yeteneklerini incelemek gerekirse şöyle sıralayabiliriz:

  • Web sayfasına HTML ekleyebilir, içeriği değiştirebilir, yeni stiller ekleyip var olanı kaldırabilir.
  • Kullanıcı hareketlerini izleyebilir. (Şuna tıkladı, mouse’u buraya yanaştırdı, aha da buraya da tıklayacak gibi…)
  • Server’lara network üzerinden istekte bulunabilir, dosyaları indirip yükleyebilir. (Diğer bir bebeğimiz AJAX ile her şey mümkün.)
  • Cookie’leri yönetebilir, gelenlere sorular sorar (Naber? Nası gidiyo?), millete mesajlar gösterir (“Bültenimize abone olun!” — Oldum be oldum gösterme şunu artık — )
  • Client taraftaki verileri hatırlar, sonra da olmadık yerde çaaat diye önüne getirir. ( :P Sonunu ben uydurdum :) )

Javascript, Ne Yapamaz?

JavaScript’in tarayıcıdaki yetenekleri, kullanıcının güvenliği açısından sınırlı. Bu yüzden her şeye de erişimi yok Javascript’in. Misal:

  • İşletim sistemi fonksiyonlarına direk erişimi yok. O yüzden kafa rahat.
  • Kamera veya mikrofon erişimi hakkı var, tabii kullanıcının izni varsa. Kimsenin bizi gizlice dinlemediğini/izlemediğini de iddia ediyor doküman. (İddia!)
  • Bulunduğumuz sayfadan diğer sayfalara ya da sekmelere de erişemiyoruz. Özellikle aynı domaine sahip değilse. Buna ‘Same Origin Policy’ deniyor. Duymuşsunuzdur illaki. Eğer diğer domainlerle bir anlaşamanız varsa Javascript diğerlerine de erişebiliyor. Daha sonra bunu ayrıntılı inceleyeceğiz.

Javascript’i Özel Kılan Nedir?

Javascript’i müko(anlamayan arkadaşlarım olmuş: Müko, mükemmelin kısaltması) yapan 3 özellik şu şekilde:

  • HTML/CSS ile mükemmel uyum. (Bu üçünü ayrı düşünemiyoruz zaten)
  • Kolay şeyler kolayca halledilebiliyor. (Ne demek şimdi bu?)
  • Tüm müko tarayıcılar tarafından destekleniyor. (Sıkıyosa desteklemesinler.)

Ayrıca Javascript ile server ve mobil uygulamalar da oluşturabiliyoruz.

Ve birçok övgü…

(Büyük laflara karnımız tok gelelim icraatlara artık…)

Javascript Üreten Diller

Javascript’i yazmak zor geldiğinde başvurduğumuz dillerden bahsedelim. (Sanki bu diller çok kolaymış gibi) Örnek olarak:

  • CoffeeScript: Daha kısa kodlar, temiz kod yapısı ve daha neler neler…. (neler?) Ruby’ci arkadaşların favorisiymiş. Bi sormak lazım.
  • Typescript: Microsoft tarafından oluşturulmuş nadide bir parça. Daha çok büyük ve karmaşık projeler için bir star.
  • Flow: Facebook tarafından yazıldı.
  • Dart: Kendi dünyasını oluşturmuş ama Javascript çıktısını da istersen verebilen Google tarafından yazılmış bir dil.

Not: Şirketlerin yarışı diyebilir miyiz?

Mini Not: Dokümanda yukarıda bahsettiğim ‘çeviri’ işlemi ‘transpiling’ şeklinde ifade ediliyor. Direk çevirisini (Google Translate) bulamayınca biraz araştırdım (Google). Ne buldum:

Compiling (Hepimizin bildiği): Bir dilde yazılan kodu diğer dile çevirme.

Transpiling: Yukarıdaki tanımın aynısı ancak bu iki dil aynı seviyede olan diller.

Yine bir sürü öğrenecek şeyin olduğu gerçeğiyle yüzleştiğim bir günü geride bıraktık. Başladığıma göre işin yarısını bitirdim diyebilir miyim?

Buraya kadar sabrettiğiniz için teşekkürler. Daha yazmaya devam edeceğim bu arada, bilmem, belki uğramak istersiniz. Eksik, gedik, fazlalık… Ne varsa aklınızda, paylaşın, aydınlanalım :)

--

--