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'i Sıkı Kullan


"use strict"; JavaScript kodunun "katı modda" yürütülmesi gerektiğini tanımlar.


"Sıkı kullanım" Direktifi

Yönerge "use strict", ECMAScript sürüm 5'te yeniydi.

Bu bir ifade değil, JavaScript'in önceki sürümleri tarafından göz ardı edilen gerçek bir ifadedir.

Amacı "use strict", kodun "katı modda" yürütülmesi gerektiğini belirtmektir.

Katı modda, örneğin, bildirilmemiş değişkenleri kullanamazsınız.

Tüm modern tarayıcılar, Internet Explorer 9 ve daha eski sürümler dışında "katı kullanımı" destekler:

Directive
"use strict" 13.0 10.0 4.0 6.0 12.1

Tablodaki sayılar, yönergeyi tam olarak destekleyen ilk tarayıcı sürümünü belirtir.

Tüm programlarınızda katı modu kullanabilirsiniz. Bildirilmemiş değişkenleri kullanmanızı engellemek gibi daha temiz kod yazmanıza yardımcı olur.

"use strict"sadece bir dizedir, bu nedenle IE 9 anlamasa bile hata vermez.


Sıkı Modu Bildirmek

Strict modu "use strict" eklenerek bildirilir ; bir komut dosyasının veya işlevin başına.

Bir betiğin başında bildirildiği gibi, genel kapsamı vardır (koddaki tüm kodlar katı modda yürütülür):

Örnek

"use strict";
x = 3.14;       // This will cause an error because x is not declared

Örnek

"use strict";
myFunction();

function myFunction() {
  y = 3.14;   // This will also cause an error because y is not declared
}

Bir işlevin içinde bildirilir, yerel kapsamı vardır (yalnızca işlevin içindeki kod katı moddadır):

x = 3.14;       // This will not cause an error.
myFunction();

function myFunction() {
  "use strict";
  y = 3.14;   // This will cause an error
}


"Sıkı kullanım"; Sözdizimi

Katı modu bildirmek için kullanılan sözdizimi, JavaScript'in eski sürümleriyle uyumlu olacak şekilde tasarlanmıştır.

Bir JavaScript programında sayısal bir değişmezi (4 + 5;) veya bir dize değişmezini ("John Doe";) derlemenin hiçbir yan etkisi yoktur. Basitçe var olmayan bir değişkene derlenir ve ölür.

Bu nedenle "use strict";, yalnızca anlamını "anlayan" yeni derleyiciler için önemlidir.


Neden Sıkı Mod?

Katı mod, "güvenli" JavaScript yazmayı kolaylaştırır.

Katı mod, daha önce kabul edilen "hatalı sözdizimini" gerçek hatalara dönüştürür.

Örnek olarak, normal JavaScript'te bir değişken adının yanlış yazılması, yeni bir global değişken oluşturur. Katı modda, bu bir hata verir ve yanlışlıkla global bir değişken oluşturmayı imkansız hale getirir.

Normal JavaScript'te bir geliştirici, yazılabilir olmayan özelliklere değer atanırken herhangi bir hata geri bildirimi almaz.

Katı modda, yazılabilir olmayan bir özelliğe, yalnızca alıcı özelliğine, var olmayan bir özelliğe, var olmayan bir değişkene veya var olmayan bir nesneye yapılan herhangi bir atama bir hata verecektir.


Katı Modda İzin Verilmez

Bir değişkenin bildirilmeden kullanılmasına izin verilmez:

"use strict";
x = 3.14;                // This will cause an error

Nesneler de değişkendir.

Bir nesnenin, onu bildirmeden kullanılmasına izin verilmez:

"use strict";
x = {p1:10, p2:20};      // This will cause an error

Bir değişkenin (veya nesnenin) silinmesine izin verilmez.

"use strict";
let x = 3.14;
delete x;                // This will cause an error

Bir işlevin silinmesine izin verilmez.

"use strict";
function x(p1, p2) {};
delete x;                // This will cause an error 

Bir parametre adının kopyalanmasına izin verilmez:

"use strict";
function x(p1, p1) {};   // This will cause an error

Sekizli sayısal değişmezlere izin verilmez:

"use strict";
let x = 010;             // This will cause an error

Sekizli kaçış karakterlerine izin verilmez:

"use strict";
let x = "\010";            // This will cause an error

Salt okunur bir özelliğe yazmaya izin verilmez:

"use strict";
const obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});

obj.x = 3.14;            // This will cause an error

Salt-alma özelliğine yazmaya izin verilmez:

"use strict";
const obj = {get x() {return 0} };

obj.x = 3.14;            // This will cause an error

Silinemez bir özelliğin silinmesine izin verilmez:

"use strict";
delete Object.prototype; // This will cause an error

Kelime evaldeğişken olarak kullanılamaz:

"use strict";
let eval = 3.14;         // This will cause an error

Kelime argumentsdeğişken olarak kullanılamaz:

"use strict";
let arguments = 3.14;    // This will cause an error

Şu withifadeye izin verilmez:

"use strict";
with (Math){x = cos(2)}; // This will cause an error

Güvenlik nedeniyle, eval()çağrıldığı kapsamda değişkenler oluşturmasına izin verilmez:

"use strict";
eval ("let x = 2");
alert (x);             // This will cause an error

İşlevlerdeki anahtar sözcük , thiskatı modda farklı davranır.

Anahtar thiskelime, işlevi çağıran nesneyi ifade eder.

Nesne belirtilmezse, katı moddaki undefinedişlevler, normal moddaki işlevler ise genel nesneyi (pencere) döndürür:

"use strict";
function myFunction() {
  alert(this); // will alert "undefined"
}
myFunction();


Gelecek Kanıtı!

Gelecekteki JavaScript sürümleri için ayrılan anahtar sözcükler, katı modda değişken adları olarak KULLANILAMAZ.

Bunlar:

  • uygular
  • arayüz
  • İzin Vermek
  • paket
  • özel
  • korumalı
  • halka açık
  • statik
  • teslim olmak
"use strict";
let public = 1500;      // This will cause an error

Dikkat etmek!

"use strict" yönergesi yalnızca bir komut dosyasının veya işlevin başlangıcında tanınır.