04 Javascript
04 Javascript
Javascript nedir?
Compiler & Interpreter
Kullanım amaçları
Sürümleri
Javascript Popülarite
İlk kodlar
Introduction
Javascript nedir? INTERV
IEW
ES ES ES ES ES ES
Mocha
1 2 3 4 5 6
ES ES ES ES ES ES ES
7 8 9 10 11 12 13
ES
14
2023
Google Trends
Swift 2.64
TypeScript 3.04
R 4.4
PHP 4.91
C/C++ 6.54
C# 6.67
JavaScript 9.36
Java 15.9
Python 27.99
0 5 10 15 20 25 30
[Link]
A Survey
C# 27.62
Typescript 38.87
Java 30.55
SQL 48.66
Python 49.28
HTML/CSS 52.9
Javascript 63.61
0 10 20 30 40 50 60 70
[Link]
Github repos
2 1
Snippets tıklanır Sources (Kaynaklar)
tıklanır
3 4
New snippet a
tıklanıp isim verilir. 5 Kodlar yazılır
Ctrl+Enter ile
çalıştırılır
İlk kodlar
<script src="assets/js/[Link]">
</body>
</html>
Kodların çalıştırılması
1 2
JavaScript Comment
Variables and
constants
Operators
Fundamentals
Javascript syntax INTERV
IEW
Train-Case P PascalCase
M MACRO_CASE
Console
[Link]("Hello World");
[Link]("Sayılar eşit");
Alert
Bilgilendirme yapmak için kullanılır
alert("Silmeye yetkiniz yok");
Confirm
Soru sormak için kullanılır.
confirm("Silmek istediği….");
Prompt
Bilgi almak için kullanılır.
prompt("Adınızı giriniz");
Comment INTERV
IEW
/*
Bu şekilde birden çok satırı aynı
anda comment içine alabilirsiniz.
*/
Variables (Değişkenler), Constants (Sabitler)
ES ES
6 6
var let const
Değişken sabit
Variables - Constants
KURALLAR
Değişken isimlendirilirken hem harfler hem de sayılar kullanılabilir. Ancak sayılar başa
gelmez. Örneğin sayi1 doğru bir isimlendirmeyken 1sayi doğru bir isimlendirme değildir.
Değişken isimlendirilirken alt tire (_ ve $) kullanılabilir. Ancak boşluk ve diğer özel
karakterler (?,%,!, ., + vb.) kullanılmaz. Örneğin ev adresi ya da kimlik%no gibi değişken
isimleri kurallara aykırı olduğundan hataya neden olacaktır.
Değişken isimlendirilirken özel kullanım için ayrılmış olan if, for, true vb. ifadeler
kullanılmamalıdır.
İngiliz alfabesinde bulunmayan karakterler (ç,ğ,ı,ö,ş,ü) kullanılamaz.
Variables - Constants
ES
11
String Number BigInt Boolean
6
Symbol Undefined null Object
var id= Symbol(); var isim; var isim = null; array, object
! typeof ! isNaN
var
=
Aritmetik Karşılaştırma Mantıksal Atama
Operatörler Operatörleri Operatörler Operatörler
Aritmetik operatörler
Operatör Sembol Örnek
Toplama + 45+6
Çıkarma - 35-7
Çarpma * 25*2
Bölme / 16/5
Üs Alma ** 5**3
const ekmek = 2;
const yumurta = 30;
const peynir = 40;
const toplamHarcama = ekmek + peynir + yumurta;
[Link]("HARCAMA:" + toplamHarcama + " TL"); ÇIKTI
HARCAMA: 72 TL
const ad = 'Ali';
const soyAd = 'Gel';
ÇIKTI ÖNEMLİ
[Link](ad + soyAd);
AliGel + operatörü ile
[Link](ad + ' ' + soyAd); Ali Gel string birleştirme de
gerçekleştirilebilir .
const x = 5;
ÇIKTI
const y = "5";
55
const birlestir = x + y;
[Link](birlestir);
ÇIKTI
[Link](x-y); 0
Tip dönüşümleri
ÖNEMLİ
const s1 = 5;
0, null, undefined, NaN, ve " "
const s2 = -7;
Javascript tarafından false olarak
const isim = "John"; ÇIKTI kabul edilir.
[Link](Boolean(isim)); true
[Link](Boolean(s1)); true Diğer değerler Boolean’a
[Link](Boolean(s2)); true çevrildiğinde true olarak kabul edilir.
Çarpma / Bölme
! Öncelik seviyesi aynıysa
soldaki ifadeyi önce yapar.
*
+ Toplama - Çıkarma
İşlem önceliği
8/2*(2+2) 16
30 – 3**2 / 3 + 10 37
16 / 2 * 3 – 2**(4 / 2) 20
( 14 * 2 / 7 )**2 / 4 + 5 9
String literals ES
Metinleri daha dinamik bir şekilde birleştirmek için string şablonları (string
literals, template literals ) kullanabiliriz. Bu birleştirme işlemine de string
interpolation denir.
Tek tırnak veya çit tırnak string interpolation bactick ile yapılır
ÖNEMLİ
Ekstra parantez kullanılmaz ise string birleştirme yapmaya çalışır. – den dolayı
birleştiremez ve NaN döndürür.
const pi = 3;
const r = 3;
const alan = pi*r**2;
const çevre = 2*pi*r ÇIKTI
[Link](çevre, alan); 18 27
[Link]("ÇEVRE:" + çevre, "ALAN:"+ alan); ÇEVRE:18 ALAN:27
Aritmetik operatörler (++, --, %)
a += 5;
[Link](a); ÇIKTI
8
const z = 3;
HATA
let k = z++; const değişkenin değeri arttırılamaz.
[Link](k);
ÖNEMLİ:
const s1 = 5; === ve !== operatörleri hem veriyi hem de
[Link](s1 == 5); true veri tipini k ontrol eder.
[Link](s1 == "5"); true == ve != operatörleri ise sadece veriyi kontrol
ederler.
[Link](s1 === "5"); false
ÖNEMLİ:
[Link](s1 > 5); false Büyük eşit ve küçük eşit işlemlerinde veri
[Link](s1 > "4"); tipi kontrolü yapılmıyor.
true
[Link](s1 >= 5); true
A B A && B A || B
A !A
1 1 1 1
1 0 0 1 1 0
0 1 0 1
0 1
0 0 0 0
Mantıksal operatörler
s3 = false;
[Link](s2 || s3 || false); true
s3 = null;
[Link](s2 && s3); null
s2 = "kuş"; ÖNEMLİ:
s3 = "kedi";
[Link](s2 || s3); kuş • VEYA işleminde ilk TRUE değerin
[Link](s2 && s3); bulunması yeterlidir. Diğerlerinin kontrolüne
kedi
gerek yoktur. Bu yüzden, ilk true olan
değişkenin değeri döndürülür. Hiçbiri true
s2 = true; değilse en sondaki değer döndürülür.
s3 = false;
• VE işleminde ilk FALSE değerin bulunması
[Link](!s2); false
yeterlidir. Diğerlerinin kontrolüne gerek
[Link](!s3); true yoktur. Bu sebeple ilk false olan değişkenin
değeri döndürülür. Hiçbiri false değilse en
sondaki değer döndürülür.
s3 = null;
[Link](!s3); true
Mantıksal Operatörler
not1
not2
50
60
T not1 > 30 && not1 < 70
not3 70
F not2 >= 60 && not3 != 70
let x = 22;
let y = 5;
let score1 = 25
let star1 = { size: 3, color: "red" }
let score2 = score1;
let star2 = star1;
score2 = 21
[Link] = "blue"
25 21 star1
star2
score2
score1
document object
querySelector
innerText
innerHtml
JavaScript value
onclick
Bir web sayfasındaki diğer tüm nesnelerin sahibi olan ana nesneye document
object denir. Document nesnesi web sayfamızı temsil eder. Eğer sayfa içindeki bir
nesneye erişmek istenilirse document nesnesi kullanılır.
[Link](selector);
[Link](selector);
innerText Bir elementin içindeki yazıyı okumak veya değiştirmek için kullanılır
innerHTML Bir elementin içindeki HTML’i okumak veya değiştirmek için kullanılır
classList Bir elementin sahip olduğu class ları manipüle etmek için kullanılır
[Link]('.name').[Link]('red');
[Link]('.name').[Link]('blue');
querySelector
function sayHello(){
alert("Hello World!");
}
DOM PRACTI
SE
Sonuç:
if
if-else
if elseif
JavaScript switch
ternary
|| and &&
Optional chaning
Nullish coalescing
Conditional Statements
Conditional Statements
• Programlamada program
akışını çeşitlendirmek için
kullanılır.
• Javascript te bunun için if
veya switch blokları
kullanılır.
if
Mantıksal ifade
doğruysa buraya
gelir if (x>5){
D }
Mantıksal Y
ifade
if PRACTI
SE
null
undefined
if (…) { NaN
5
"Hello"
true
false
{name: ‘John’}
} {}
[5,3,1,5]
[]
if-else
if (x>5){
Mantıksal ifade
doğruysa buraya }
gelir
else{
D }
1. D 1. Mantıksal ifade
doğruysa buraya
Mantıksal
gelir
ifade
if (x>5){
Y }
elseif(x<3){
2. D 2. Mantıksal ifade
doğruysa buraya
}
else{
Mantıksal gelir
ifade
}
Y
[Link]ıksal ifade
yanlışsa buraya
gelir
if-elseif-else PRACTI
SE
1. D 1. Mantıksal ifade
Mantıksal doğruysa buraya
ifade gelir
switch(true){
Y case(x>3):
…
break;
D 2. Mantıksal ifade
2. doğruysa buraya case(x>20):
Mantıksal gelir …
ifade
break;
Y case(x>30):
…
break;
3. D default:
Mantıksal 2. Mantıksal ifade
ifade doğruysa buraya …
gelir }
Y Hiçbir case e
girmezse buraya
default gelir
switch PRACTI
SE
var x = 15
x == 10 && alert("x is 10");
x == 10 || alert("x is not 10");
Optional Chaining ES
11
11
const user;
alert(user ?? "Anonymous");
nullish coalescing
const user;
alert(user !== null && user !== undefined ? user : "Anonymous");
ternary
Nullish Coalescing PRACTI
SE
ES
JavaScript
Basic Loops
Döngüler
Mantıksal ifade
True doğru olduğu
Check sürece buradaki
condition kodlar sürekli
tekrarlanır
False
for
Mantıksal ifade
True doğru olduğu
Check sürece buradaki
condition kodlar sürekli
tekrarlanır
False
while
True
False
do-while
JavaScript Scope
Hoisting
Anonymous fonksiyon
var-let-const
Functions
Fonksiyon nedir?
Ana program
kodları
.
.
. fonksiyon(){
. .
fonksiyon(); .
. .
. }
.
.
.
.
.
Fonksiyon tanımlama
Function declaration
Fonksiyona dışarıdan
function fonksiyonIsmi(param1, param2, …){ gelen parametreler
// işlemler
// …
Fonksiyonun çağrıldığı
return donenDeger;
yere döndürdüğü değer
}
function yasHasapla(){
Bu fonksiyon hep aynı yaşı
[Link](`Benim yaşım ${2022 - 1990}`);
gösteriyor. Farklı doğum
}
tarihlerine göre daha
modüler hale getirilebilir
yasHasapla();
mi?
yasHasapla();
Fonksiyon tanımlama
function yasHasapla(dogumTarihi){
[Link](`Benim yaşım ${2022 - dogumTarihi}`); Eğer yaş bilgisi ana
} programda kullanılmak
istenirse ne yapılabilir?
yasHasapla(1980);
yasHasapla(2001);
Fonksiyon tanımlama
function yasHasapla(dogumTarihi){
return 2022 - dogumTarihi;
}
yasHesapla(); yasHesapla();
Hoisting
Anonymous
Function
Immediately
Invoke Function
Callback
Function
Fonksiyon tanımlama ES
Declaration
fonk();
[Link](`Fonk. Dışı: ${++sayi}`);
Block Scope ES
yasHesapla();
var vs let vs const
Değiştirilebilir
Global scope
Function scope
Block scope
Hoisting
Re-declaration
Scope PRACTI
SE
JavaScript
Event Handlers
Event handler
event throwing
event listening
Click Me
function sayHello(){
Hello alert("Hello");
}
Tanımlama (1.Yöntem)
<button onclick="sayHello()">Tıkla</button>
function sayHello(e){
alert("Hello");
}
Tanımlama (2.Yöntem)
<button id="btnMsg">Tıkla</button>
[Link]("#btnMsg").onclick = sayHello;
function sayHello(e){
alert("Hello");
}
Tanımlama (3.Yöntem)
<button id="btnMsg">Tıkla</button>
[Link]("#btnMsg").addEventListener("click", function(e){
alert("Hello");
});
Aralık Not
[90-100] A
[80-90) B
[70-80) C
[50-70) D
[0-50) F
Object nedir?
Object tanımlama
Array nedir?
Array tanımlama
JavaScript Array of objects
Array Methods
Array iterations & search
for-in
forEach
map
Objects & Arrays filter
reduce
every
some
Object nedir?
{…}
• Programımızda bir çalışana ait çeşitli özellikleri
saklamak istiyoruz. Bu durumda, değişken
kullanırsak;
{…}
Javascript te basit object tanımı { } ile yapılır.
const employee = {
firstName : 'Ali',
lastName : 'Gel',
birthDate : '1.1.1990',
salary : 7000
}
[Link](employee);
[Link]([Link]);
Object methods
• Bir object
içinde key e
göre arama
yapıp value
döndüren
uygulamayı
yapınız
Array nedir?
[…]
• Programımızda araba isimlerini saklamak
istiyoruz. Bu durumda, değişken kullanırsak;
Diziler, bir veri yapısı (data structure) olup bir veya çok daha fazla veriyi saklamak için
kullanılır.
Array tanımlama INTERV
IEW
0 1 2 3
4 .push( )
.pop()
.shift()
4 .unshift( )
.sort()
.reverse()
.splice(1, 2, )
Mutator methodlar
.concat( )
true .includes( )
1 .indexOf( )
2 .lastIndexOf ( )
.slice( 0, 2 )
Access methods
[Link](3); false
[Link]("at")); false
[Link]([Link]()); fil,kuş,deve,fare,kedi
[Link]([Link]("")); filkuşdevefarekedi
[Link]([Link]("-")); Fil-kuş-deve-fare-kedi
[Link]([Link]()); fil,kuş,deve,fare,kedi
Access methods
[Link]([Link]('kuş')); 1
[Link]([Link]('kuş')); 5
[Link]([Link]('at')); -1
ÖRNEK:
Bir dizideki sayıların const rakamlar = [-5, 15, 22, -4, 45, 78, -25];
toplamını hesaplayan
uygulamayı For döngüsü ile let toplam = 0;
yazınız.
for (let i = 0 ; i < [Link] ; i++) {
toplam += rakamlar[i];
}
[Link](toplam);
Iteration - for PRACTI
SE
[Link](birlestir(adlar, soyAdlar));
Iteration – for of
ES
FOR OF, bir çok veri yapısı üzerinde çalışabildiği için FOR IN’e göre daha
geniş kullanım alanına sahiptir. Diziler, Stringler v.b bir çok veri yapısında
kullanılabilir. Değişken içine otomatik olarak elemanın değeri gelir.
FOR OF döngüsüne benzemektedir. Sadece diziler üzerinde çalışır. For of’ tan
sonra popülerliğini yitirmeye başlamıştır.
Mevcut bir dizi içinde iterasyon yapıp, orijinal dizinin kopyası üzerinde
elemanlarının değerlerini değiştirmeyi sağlar. Değişiklik yapılmış diziyi geri
verir. Map methodu orijinal diziyi değiştirmez.
ÖRNEK:
tlFiyatlar dizidekisindeki ürünlere fiyatı 100 TL den fazla
olanlara %10 zam, 100 TL den az olanlara ise %15 zam
yapılmak isteniyor.
Ayrıca, zamlı olan yeni değerleri yeni bir diziye saklamak
istiyoruz.
Iteration – filter
Mevcut bir dizi içinde iterasyon yapıp, orijinal dizinin kopyası üzerinde
filtreleme yapar. Filtrelenmiş diziyi geri verir. Filter methodu orijinal diziyi
değiştirmez.
ÖRNEK:
Koordinatlar dizisindeki negatif koordinatları alıp yeni bir dizide saklayan uygulamayı
filter() ile yapınız.
ÖRNEK:
Koordinatlar dizisindeki negatif koordinatları seçerek bunları pozitife çevirip alt alta konsola
bastıran uygulamayı yazınız.
Mevcut bir dizi içinde iterasyon yapıp, yapılan işlemlere göre tek bir
hesaplanmış değer döndürür.
ÖRNEK:
Koordinatlar
dizisindeki
const koordinatlar = [-100, 150, -32, 43, -20];
değerlerin
toplamını, ara
const toplam = [Link]( (tp, koordinat ) => {
[Link](`iterasyon ${tp} ${koordinat}`);
değerleri de
return tp + koordinat;
göstererek
},0); konsola bastıran
[Link](toplam); uygulamayı
reduce() ile
yazınız.
Iteration – reduce
ÖRNEK:
Koordinatlar dizisindeki değerlerin ortalamasını hesaplayarak konsola bastıran uygulamayı
reduce() ile yazınız.
ÖRNEK:
Bir Firma, 3000 TL den az olan maaşlara %10 zam yapmak istiyor ve zam yapılan bu kişilere
toplam kaç TL ödeneceğini bilmek istiyor. İlgili programı yazınız.
[Link]([Link](2));
Reduce PRACTI
SE
Mevcut bir dizi içinde tüm elemanların istenilen kriteri sağlayıp sağlamadığını
döndürür. Sağlıyorsa true, değilse false döner.
DOM
(Document Object Model)
DOM Nedir?
<html lang="en">
<head>
<meta charset="UTF-8">
<title>DOM</title>
</head>
<body>
<h1>DOM Temelleri</h1>
<section>
<img src="./img/js_logo.png" alt="Javascript">
<p>Javascript öğrenmek için link
<a href="[Link]">Javascript</a>
</p>
<button>Tıkla</button>
</section>
<script src="[Link]"></script>
</body>
</html>
DOM’a Erişim INTERV
IEW
Method Açıklama
Method Açıklama
Her satırın
sonundaki Sil
butonlarına
basıldığında satır
başındaki ismi
alarak uyarı veren
programı yazınız.
DOM güncelleme
Method Açıklama
Method Açıklama
Method Açıklama
Method Açıklama
Tablodaki
satırların
sonundaki sil
butonuna
basıldığında satırı
silen programı
yapınız.
HOME
DOM WORK
1 Ali Gel 80
2 Ayşe Koş 70
3 Mehmet Git 90
Average 70
Error handling
Debugging
Timeout , Interval
Web storage
JavaScript Rest & spread operatör
Destructuring
Syncrounous &
Asyncronous
Callbacks
Modules
Advanced JavaScript
Promises
Error handling INTERV
IEW
Genellikle kullanıcıdan bilgi alırken veya bir API dan bilgi çekerken
kullanılırlar.
try{
Hata olması beklenen kodlar try
bloğu içine yazılır.
}
finally {
Hata olsa da olmasa da çalıştırılan
bir bloktur. Kullanılması zorunlu
değildir.
}
Error handling PRACTI
SE
1
Debugging
bölümü
açılır
2
Run and
Debug
butonuna
basılır
3
Hangi ortamda
çalıştırılacağı seçilir
Debugging
Yaşam süresi Expire olana veya silinene kadar Browser kapanana veya silinene kadar
localStorage sessionStorage
[Link]("counter", 1);
Web Storage API PRACTI
SE
…
INTERV
ES
6
Rest ve Spread operatörleri 3 nokta ile ifade edilirler ancak
birbirinden farklıdırlar.
REST SPREAD
Örnek: Toplama işlemi yapan bir fonksiyon yapınız. Ancak bu fonksiyona farklı miktarda
sayı parametre olarak gönderilebilmelidir.
Gelen tüm
parametreleri
function topla(...sayilar){ sayilar isimli dizi
return [Link]( (toplam, x)=> toplam + x); içinde alacaktır.
}
[Link](topla(3,5,6));
[Link](topla(13,5,16,3,56,76,1));
Rest Operator
Örnek: Öğrencinin adını ve soyadı ile belirsiz sayıda notu parametre olarak alan ve
notların ortalamasını bulup, öğrenci adı ile birlikte ortalamayı döndüren fonksiyonu
yazınız.
[Link](ortalama("Ali","Gel",3,5,6));
[Link](topla(("Ayşe","Koş", 13,5,16,3,56,76,1));
Spread Operator
Örnek: Bir dizi içindeki sayıları ayrı ayrı parametre olarak topla fonksiyonuna gönderen
kodları yazınız.
Sayılar dizisini
genişletip her bir
function topla(s1, s2, s3){ elemanını ayrı bir
return s1 + s2+ s3; değişken haline
} getirdi.
numberStore
dizisi başka bir
dizi içinde
açılarak ve yeni
let numberStore = [0, 1, 2]; elemanlar
let newNumber = 12; eklenerek
numberStore = [...numberStore, newNumber, 15]; güncellendi.
Spread Operator
student
const student = { nesnesini
firstName: "Ali", genişletip,
lastName: "Gel", firstName
no:"234", özelliğinin değeri
phone:"23423423423" değiştirip yeni bir
}; nesne
oluşturuyor.
let newStudent = {...student, firstName:"Veli"};
[Link](student, newStudent);
Destructuring INTERV
IEW
ES
Student nesnesi
const student = {
içindeki, "Ali" ve
firstName: "Ali",
"Gel" değerlerini
lastName: "Gel",
ayrı ayrı
no:"234",
firstName ve
phone:"23423423423"
lastName
};
değişkenlerine
aktarmış
const { firstName, lastName } = student;
[Link](firstName);
Destructuring
sayHello(student);
Modules INTERV
IEW
export import
[Link] [Link]
showAlert();
export const showConfirm = () => {
}
Modules
[Link] [Link]
showAlert();
const showConfirm = () => {
[Link] [Link]
showAlert();
const showConfirm = () => {
sOrderASC()
sOrderDESC()
nOrderASC()
nOrderDESC()
Synchronous vs Asynchronous
Synchronous
11sn
Synchronous vs Asynchronous
Asynchronous
İşlem 1 2sn
İşlem 2 5sn
İşlem 3 1sn
İşlem 4 3sn
5sn
Synchronous vs Asynchronous
function getData(){
setTimeout( ()=> {
[Link]("ok2");
},500);
}
[Link]("ok1"); ok1
getData(); ok3
[Link]("ok3"); ok2
Callbacks INTERV
IEW
.
.
.
function siparisVer(callback){
siparisVer( (sonuc)=> {
...
callback("lahmacun");
}
});
Callbacks
function siparisVer(callback){
siparisVer( (sonuc)=> { [Link]("sipariş verdim");
[Link](sonuc); setTimeout( ()=> {
}); callback("lahmacun hazır");
[Link]("ayakkabı aldım"); },3000)
}
Callback Chains
siparisVer( (sonucSiparis)=> {
yemekYe( (sonucYemek)=>{
sinemadaFilmIzle( (sonucFilm)=> {
});
});
});
[Link]("ayakkabı aldım");
Promises INTERV
IEW
Promise yapıları, callback ler gibi asenkron sonuçları işleyebilmek için kullanılan,
callback lerdeki bazı sorunların da ortadan kaldırıldığı daha güvenilir yapılardır.
4 3
Promises
Resolve ile dönüşler then tarafında, reject ile dönüşler catch tarafında yakalanır.
Promise PRACTI
SE
const f1 = () => {
return new Promise( (resolve, reject)=> {
const init = async () => {
setTimeout(() => resolve("hello2"), 1000);
[Link]("hello1");
})
const msg1 = await f1();
}
[Link](msg1);
[Link]("hello3");
const f2 = () => {
const msg2 = await f2();
return new Promise( (resolve, reject)=> {
[Link](msg2);
setTimeout(() => resolve("hello4"), 2000);
}
})
}