Bu bölümde kısaca JavaScript dilinde hali hazırda öÄrendiÄiniz fakat özellikle dikkat etmeniz gereken inceliklerden bahsedilecektir.
Kod Yapısı
Cümleler birbirinden noktalı virgül ile ayrılır:
alert('Merhaba'); alert('Dünya');
Genelde, yeni satıra geçmekte noktalı virgül görevi görür. Bundan dolayı aÅaÄıdaki kod da çalıÅır:
alert('Merhaba')
alert('Dünya')
Buna âotomatik noktalı virgül koymaâ denir. Bazen çalıÅmaz, örneÄin:
alert("Bu mesajdan sonra hata verecek")
[1, 2].forEach(alert)
ÃoÄu kod klavuzu her cümlenizin sonuna noktalı virgül kullanmanız gerektiÄi kanısındadır.
Noktalı virgüller {..} kod bloÄu sonunda gerekli deÄildir, örneÄin döngüler:
function f() {
// fonksiyon tanımından sonra noktalı virgül yazılmaz
}
for(;;) {
// döngüden sonra noktalı virgül yazılmaz
}
⦠Diyelim ki yine de noktalı virgül koymak istediniz. Bu bir hata deÄildir, önemsenmez.
Daha fazlasına Kod yapısı bölümünden bakabilirsiniz.
Sıkı Mod
JavaScriptâin tüm modern özelliklerini kullanabilmek için, "use strict" kullanmanız gerekmektedir.
'use strict';
...
Bu talimatı dosyanın baÅında veya fonksiyonun baÅında belirtmeniz gerekmektedir.
"use strict" kullanmadan da her Åey çalıÅır. Fakat eski tipte ve uyumluluk modunda çalıÅır. Modern davranıÅı seçerseniz böylece son yenilikleri uyumluluk modu olmadan da çalıÅtırabilirsiniz.
Bazı modern özellikler ise uyumluluk modunda da çalıÅmaz sadece sıkı modda çalıÅır. Bunlara ilerleyen zamanlarda deÄinilecektir. Dahası için: Modern mod, "use strict".
DeÄiÅkenler
Åu Åekillerde tanımlanabilir:
letconst(sabit, deÄiÅtirilemez)var(eski tip)
DeÄiÅkenler isimlendirilirken aÅaÄıdakileri içerebilir:
- Harf ve sayıları içerebilir fakat ilk karakter sayı olamaz.
$ve_gibi karakterler diÄer karakterle aynı niteliktedir ve her yerde kullanılabilir.- Latin olmayan yani Arapça, Japonca, Ãince gibi diller de kullanılabilir fakat genelde kullanılmaz.
DeÄiÅkenler dinamik yazıma sahiptir ve her Åeyi tutabilirler:
let x = 5;
x = "Ahmet";
7 çeÅit veri tipi bulunmaktadır:
number( sayı ) floating-point ve doÄal sayılar için kullanılır.string(karakter dizileri),booleanMantıksal deÄerler içindogru/yanlis,nullâ sadecenulldeÄerini tutar ve bu da âboÅâ veya âvarolmayanâ anlamına gelir,undefinedâ sadeceundefineddeÄerine sahiptir. Bu da âdeÄer atanmamıÅâ demektir,objectvesymbolâ karmaÅık veri yapıları için ve tek tanıtıcı(unique identifier) için kullanılabilir. Bu konular henüz anlatılmadı.
typeof operatörü deÄerin tipini döndürür, fakat Åu hallerde hata verir:
typeof null == "object" // hata verir
typeof function(){} == "function" // fonksiyonlara özel davranılır.
Dahası için: DeÄiÅkenler ve Veri Tipleri konularına bakabilirsiniz.
EtkileÅim
Åu anda tarayıcıyı çalıÅma ortamı olarak kullandıÄınızdan dolayı, bazı basit arayüz fonksiyonlarını bilmekte fayda var:
prompt(soru[, varsayılan])sorusor ve kullanıcının girdiÄi deÄeri döndür. EÄer kullanıcı âiptalâ tuÅuna bakarsanulldöndür.confirm(soru)sorusor ve âTamamâ mı yoksa âİptalâ mi diye seçenekler sun. Sonuçta seçilene göretrue/falsedöndür.alert(mesaj)- Mesajın çıktısını ekrana uyarı olarak ver.
Tüm bu fonksiyonlar modal dır. Tekrar hatırlatmak gerekirse modallar kullanıcının etkileÅimi olana kadar kodu durdururlar. Yani kullanıcıdan cevabı beklerler.
ÃrneÄin:
let ziyaretci = prompt("Adınız?", "İbrahim");
let cayIstermi = confirm("Biraz çay ister misiniz?");
alert( "Ziyaretçi: " + ziyaretci ); // İbrahim
alert( "Ãay isteriyor mu?: " + cayIstermi ); // true
Dahası için: EtkileÅim: alarm kutusu, kullanıcıdan bilgi isteme, onaylama.
Operatörler
JavaScript aÅaÄıdaki operatörleri destekler:
- Aritmetiksel
-
Normal iÅlemler:
* + - /, mod alma%ve**üs alma için bu operatörler kullanılır.EÄer operandlardan birisi karakter ise diÄer taraf sayı bile olsa
+kullanıldıÄında bu iki deÄer de karakter olarak varsayılıralert( '1' + 2 ); // '12', karakter dizisi alert( 1 + '2' ); // '12', karakter dizisi - DeÄer atama
-
Basit bir Åekilde
a = bÅeklinde kullanılabilir. Veya birleÅik olaraka *= 2gibi de kullanıma sahiptir. - Bit seviyesi iÅlemler
-
Bit seviye operatörleri Åu Åekilde kullanılabilir: docs
- Ãçlü operatör
-
Ãç tane paremetreden oluÅur:
koÅul ? sonucA : sonucB. EÄerkoÅuldoÄru isesonucAdöndürür, yanlıŠisesonucB - Mantıksal operatörler:
-
Mantıksal VE
&&, VEYA||operatörleri ile bu iÅlemler yapılabilir. - KarÅılaÅtırma
-
EÅitlik kontrolü
==, farklı tipteki verileri sayıya çevirip kontrol eder.nullveundefinedhariç, bu ikisi de birbirine eÅittir.alert( 0 == false ); // true alert( 0 == '' ); // truesıkı eÅitlikoperatörü===bu çeviriyi yapmamaktadır: farklı tipler her zaman farklı deÄerler ifade eder, öyleyse:nullveundefineddeÄerleri özeldir:==Åeklinde birbirlerine eÅittirler. Fakat baÅka hiçbir deÄere eÅit deÄildirler. Büyüktür/Küçüktür karÅılaÅtırmasında karakter dizileri karakter karakter karÅılaÅtırılır. DiÄer tipler sayıya çevrilir.
Geri kalan operatörleri daha derin bir biçimde Operatörler, KarÅılaÅtırmalar, Mantıksal Operatörler bölümlerinden inceleyebilirsiniz.
Döngüler
-
Åimdiye kadar 3 çeÅit döngü iÅlendi:
// 1 while (koÅul) { ... } // 2 do { ... } while (koÅul); // 3 for(let i = 0; i < 10; i++) { ... } -
for(let...)içinde tanımlanan deÄiÅkenler sadece döngü içerisinden eriÅilebilirdir. Fakatleti pas geçip var olan deÄiÅkeni kullanmak da mümkündür. -
Direktifler
break/continuedöngüden çıkılmasını saÄlar.labelkullanarak iç içe döngüdebreak/continuenereye dallanacaÄını belirleyebilirsiniz.
Detaylarına Döngüler: while ve for bölümünden eriÅebilirsiniz.
İlerleyen bölümlerde döngülerin nasıl objelerle baÅa çıktıÄı üzerinde durulacaktır.
âswitchâ yapısı
âswitchâ yapısı çoklu if kontrolleri yerine kullanılabilir. âswitchâ karÅılaÅtırma için, sıkı karÅılaÅtırmayı === kullanır.
ÃrneÄin:
let age = prompt('Kaç yaÅındasın?', 18);
switch (age) {
case 18:
alert("ÃalıÅmaz"); // `prompt` ile tutulan deÄer sayı deÄil karakterdir!!!
case "18":
alert("ÃalıÅır!");
break;
default:
alert("DeÄer yukarıda bulunan koÅullara uymamakta");
}
Detaylı bilgi için: "switch" cümleleri.
Fonksiyonlar
Åimdiye kadar üç faklı yolla fonksiyon yazılabileceÄi gösterildi:
-
Fonksiyon Tanımlama: Fonksiyon ana kod akıÅında.
function toplam(a, b) { let sonuc = a + b; return sonuc; } -
Fonksiyon ifadesi: Fonksiyon ifadenin içerisinde
let toplam = function(a, b) { let sonuc = a + b; return sonuc; }Fonksiyon ifadesi bir
ismesahip olabilir fakat buisimsadece bu fonksiyon içinde kullanılabilir. ÃrneÄin =toplam = function isim(a,b)gibi. -
Ok fonksiyonları:
// ifada saÄ tarafta let toplam = (a, b) => a + b; // Ãoklu satır için {..} kullanılmalı ve `return` ile deÄerin döndürülmesi gerekmektedir: let toplam = (a, b) => { // ... return a + b; } // argümansız let selamVer = () => alert("Merhaba"); // tek argümanlı let ikiyeKatla = n => n * 2;
- Fonksiyonlar yerel deÄiÅkenlere sahip olabilirler: Bu deÄiÅkenler fonksiyon gövdesinde yazılır ve sadece fonksiyon içerisinde kullanılabilir.
- Parametreler varsayılan deÄerlere sahip olabilirler:
function sum(a = 1, b = 2){...} - Fonksiyonlar her zaman bir Åey döndürürler. EÄer
returnkelimesi yoksa sonuçta yine deundefineddöner.
| Fonksiyon Tanımlama | Fonksiyon ifadesi |
|---|---|
| Tüm kod bloÄunda görünür | kodların çalıÅması kendisine ulaÅırsa çalıÅır |
| - | isme sahip olabilir, sadece fonksiyon içerisinde çalıÅır |
Dahası için: Fonksiyonlar, "function-expressions-arrows" adresindeki makale bulunamadı.
Dahası var
Burada sadece JavaScrpt özelliklerinin kısa bir listesi verilmiÅtir. Åu ana kadar sadece basit anlamda bu dili inceledik. Gelecek konularda daha özel ve geliÅmiÅ JavaScript özelliklerini inceleyebilirsiniz.
Yorumlar
<code>kullanınız, birkaç satır eklemek için ise<pre>kullanın. EÄer 10 satırdan fazla kod ekleyecekseniz plnkr kullanabilirsiniz)