JS Eğitimi

ANA SAYFA JS Giriş JS Nereye JS Çıktı JS İfadeleri JS Sözdizimi JS Yorumları JS Değişkenleri JS Let JS Sabiti JS Operatörleri JS Aritmetiği JS Ataması JS Veri Türleri JS Fonksiyonları JS Nesneleri JS Etkinlikleri JS Dizeleri JS Dize Yöntemleri JS Dizisi Arama JS Dize Şablonları JS Numaraları JS Numarası Yöntemleri JS Dizileri JS Dizi Yöntemleri JS Dizi Sıralaması JS Dizi Yineleme JS Dizi Sabiti JS Tarihleri JS Tarih Formatları JS Tarih Alma Yöntemleri JS Tarih Ayar Yöntemleri JS Matematik JS Rastgele JS Booleanları JS Karşılaştırmaları JS Koşulları JS Anahtarı JS Döngüsü İçin JS Döngüsü İçin JS Döngüsü JS Döngüsü JS Arası JS Yinelenebilirler JS Setleri JS Haritaları JS Türü JS Tipi Dönüşüm JS Bitsel JS Normal İfade JS Hataları JS Kapsamı JS Kaldırma JS Sıkı Modu Bu Anahtar Kelimeyi JS JS Ok İşlevi JS Sınıfları JS JSON JS Hata Ayıklama JS Stil Kılavuzu JS En İyi Uygulamaları JS Hataları JS Performansı JS Ayrılmış Kelimeler

JS Sürümleri

JS Sürümleri JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Kenar JS Geçmişi

JS Nesneleri

Nesne Tanımları Nesne Özellikleri Nesne Yöntemleri Nesne Görüntüleme Nesne Erişimcileri Nesne Oluşturucuları Nesne Prototipleri Nesne Yinelenebilirler Nesne Kümeleri Nesne Haritaları Nesne Referansı

JS Fonksiyonları

Fonksiyon Tanımları Fonksiyon Parametreleri Fonksiyon Çağırma İşlev Çağrısı İşlev Uygula Fonksiyon Kapanışları

JS Sınıfları

Sınıf Tanıtımı Sınıf Kalıtımı Sınıf Statik

JS Zaman uyumsuz

JS Geri Aramaları JS Asenkron JS Sözleri JS Zaman uyumsuz/Bekliyor

JS HTML DOM'si

DOM Tanıtımı DOM Yöntemleri DOM Belgesi DOM Öğeleri DOM HTML'si DOM Formları DOM CSS'si DOM Animasyonları DOM Olayları DOM Olay Dinleyicisi DOM Gezinme DOM Düğümleri DOM Koleksiyonları DOM Düğüm Listeleri

JS Tarayıcı Malzeme Listesi

JS Penceresi JS Ekranı JS Konumu JS Geçmişi JS Navigatörü JS Açılır Pencere Uyarısı JS Zamanlaması JS Çerezleri

JS Web API'leri

Web API'sine Giriş Web Formları API'sı Web Geçmişi API'si Web Depolama API'sı Web Çalışanı API'si Web Getirme API'sı Web Coğrafi Konum API'sı

JS AJAX

AJAX'a Giriş AJAX XMLHttp AJAX İsteği AJAX Yanıtı AJAX XML Dosyası AJAX PHP AJAX ASP AJAX Veritabanı AJAX Uygulamaları AJAX Örnekleri

JS JSON

JSON'a Giriş JSON Sözdizimi JSON'a karşı XML JSON Veri Türleri JSON Ayrıştırma JSON Stringify JSON Nesneleri JSON Dizileri JSON Sunucusu JSON PHP JSON HTML'si JSON JSONP

JS ve jQuery

jQuery Seçiciler jQuery HTML'si jQuery CSS'si jQuery DOM'si

JS Grafikleri

JS Grafikleri JS Tuval JS Konusu JS Chart.js JS Google Grafiği JS D3.js

JS Örnekleri

JS Örnekleri JS HTML DOM'si JS HTML Girişi JS HTML Nesneleri JS HTML Olayları JS Tarayıcı JS Editörü JS Alıştırmaları JS Testi JS Sertifikası

JS Referansları

JavaScript Nesneleri HTML DOM Nesneleri


JavaScript Kapanışları


JavaScript değişkenleri yerel veya global kapsama ait olabilir.

Global değişkenler, kapanışlar ile yerel (özel) hale getirilebilir .


Genel Değişkenler

A , fonksiyon içindefunction tanımlanan tüm değişkenlere aşağıdaki gibi erişebilir :

Örnek

function myFunction() {
  let a = 4;
  return a * a;
}

Ancak , aşağıdaki gibi, fonksiyonun dışındafunction tanımlanan değişkenlere de erişebilir :

Örnek

let a = 4;
function myFunction() {
  return a * a;
}

Son örnekte, a global bir değişkendir.

Bir web sayfasında, global değişkenler pencere nesnesine aittir.

Global değişkenler, sayfadaki (ve penceredeki) tüm komut dosyaları tarafından kullanılabilir (ve değiştirilebilir).

İlk örnekte, a yerel bir değişkendir.

Yerel bir değişken sadece tanımlandığı fonksiyon içinde kullanılabilir. Diğer işlevlerden ve diğer komut dosyası kodlarından gizlenmiştir.

Aynı ada sahip global ve yerel değişkenler farklı değişkenlerdir. Birini değiştirmek diğerini değiştirmez.

Bir bildirim anahtar sözcüğü ( , , veya ) olmadan oluşturulan değişkenler , bir işlev içinde oluşturulmuş olsalar bile her zaman globaldir.varletconst

Örnek

function myFunction() {
  a = 4;
}


Değişken Ömür

Global değişkenler, başka bir sayfaya gittiğinizde veya pencereyi kapattığınızda olduğu gibi, sayfa atılana kadar yaşar.

Yerel değişkenlerin ömrü kısadır. İşlev çağrıldığında oluşturulurlar ve işlev bittiğinde silinirler.


Bir Karşı İkilem

Bir şeyi saymak için bir değişken kullanmak istediğinizi ve bu sayacın tüm fonksiyonlar için kullanılabilir olmasını istediğinizi varsayalım.

functionSayacı artırmak için global bir değişken ve a kullanabilirsiniz:

Örnek

// Initiate counter
let counter = 0;

// Function to increment counter
function add() {
  counter += 1;
}

// Call add() 3 times
add();
add();
add();

// The counter should now be 3

Yukarıdaki çözümle ilgili bir sorun var: Sayfadaki herhangi bir kod, add()'ı çağırmadan sayacı değiştirebilir.

add()Diğer kodun onu değiştirmesini önlemek için sayaç, işlevde yerel olmalıdır :

Örnek

// Initiate counter
let counter = 0;

// Function to increment counter
function add() {
  let counter = 0;
  counter += 1;
}

// Call add() 3 times
add();
add();
add();

//The counter should now be 3. But it is 0

Yerel sayaç yerine global sayacı görüntülediğimiz için işe yaramadı.

Global sayacı kaldırabilir ve fonksiyonun onu döndürmesine izin vererek yerel sayaca erişebiliriz:

Örnek

// Function to increment counter
function add() {
  let counter = 0;
  counter += 1;
  return counter;
}

// Call add() 3 times
add();
add();
add();

//The counter should now be 3. But it is 1.

Fonksiyonu her çağırdığımızda yerel sayacı sıfırladığımız için işe yaramadı.

 Bir JavaScript iç işlevi bunu çözebilir.


JavaScript İç İçe İşlevler

Tüm işlevlerin global kapsama erişimi vardır.  

Aslında, JavaScript'te tüm işlevlerin "yukarıdaki" kapsama erişimi vardır.

JavaScript iç içe işlevleri destekler. İç içe geçmiş işlevlerin "yukarıdaki" kapsama erişimi vardır.

Bu örnekte, iç işlevin üst işlevdeki değişkene plus()erişimi vardır :counter

Örnek

function add() {
  let counter = 0;
  function plus() {counter += 1;}
  plus();   
  return counter;
}

plus() Fonksiyona dışarıdan ulaşabilseydik, bu karşıt ikilemi çözebilirdi .

counter = 0Ayrıca yalnızca bir kez yürütmenin bir yolunu bulmamız gerekiyor .

Bir kapanışa ihtiyacımız var.


JavaScript Kapanışları

Kendi kendine çağrılan işlevleri hatırlıyor musunuz? Bu işlev ne yapar?

Örnek

const add = (function () {
  let counter = 0;
  return function () {counter += 1; return counter}
})();

add();
add();
add();

// the counter is now 3

Örnek Açıklama

Değişken add, kendi kendini çağıran bir işlevin dönüş değerine atanır.

Kendi kendini çağırma işlevi yalnızca bir kez çalışır. Sayacı sıfır (0) olarak ayarlar ve bir işlev ifadesi döndürür.

Bu şekilde add bir fonksiyon haline gelir. "Harika" kısım, üst kapsamdaki sayaca erişebilmesidir.

Buna JavaScript kapatma denir . Bir fonksiyonun " özel " değişkenlere sahip olmasını mümkün kılar .

Sayaç, anonim işlevin kapsamı tarafından korunur ve yalnızca ekleme işlevi kullanılarak değiştirilebilir.

Kapatma, üst işlev kapandıktan sonra bile üst kapsama erişimi olan bir işlevdir.