javascript kod yazım/kullanım kod standardu olan Ecmascript’in Ecmascript5 versiyonu ile Strict Mode (SM) kullanıma sunuldu. SM genel ifadeyle javascript kodlarının belirli kısıtlamalarla kullanımını kontrol etmektedir. Bu yazımda örneklerle kullanım örneklerinden bahsedeceğim.
Öncelikle bu modu kullanmanız için herhangi bir zorlama yok, ancak yazılan kodların anlaşılabilirliği, hata ayıklama, kısmen daha hızlı çalışması için kullanmanız önerilmektedir. Bu modu kullanmak için javascript bloğumuzun üst kısmında “use strict”; veya ‘use strict’; yazmalıyız.
1 2 |
"use strict"; // javascript kodları |
Global değişken kullanım durumu.
Blok içerisinde “var” kullanmadan değişken oluşturduğumuzda bu modda hata ile karşılacağız.
1 2 3 |
"use strict"; x = 5;// dönüş=>ReferenceError: assignment to undeclared variable x; console.log(x); |
Burada yapmak istediğimiz herhangi bir yerden ulaşmak istediğimiz bir değişken tanımlamaktı. Strict Mode olmadan x = 5; atamamız otomatik olarak window.x=5; olarak kabul edilmekteydi. Bu durumu aşağıdaki şekilde düzeltiyoruz.
1 2 3 4 5 |
"use strict"; window.x = 5; console.log(x); //=>5; |
İsimsiz bir fonksiyon içerisine bulunduğumuz objeyi bastırabiliyorken SM bu durumda consola undefined çıktı verecektir.
1 2 3 4 5 6 |
(function () { "use strict"; console.log(this); }()); //undefined |
Bu durum aşağıdaki gibi çözebiliriz.
1 2 3 4 5 |
(function (w) { "use strict"; console.log(w); }(window)); //=> window |
eval fonksiyonu kullanımına izin verilmemektedir.
1 2 3 4 5 6 |
(function () { "use strict"; eval("var x = 5;"); console.log(x); }()); //=> ReferenceError: x is not defined |
Fonksiyon içerisinde arguments, eval değişkenleri tanımlanması yazım hatasına neden olur.
1 2 3 4 5 |
"use strict"; function isim(){ var arguments = [1,2,3]; } //=>SyntaxError: redefining arguments is deprecated |