ECMAScript 5 – Strict mode Proč strict mode? - sice omezující, ale předchází chybám - háže chybové hlášky než aby v tichosti proběhl → lepší ladění aplikace
ECMAScript 5 – Strict mode Jaké jsou nejzajímavější omezení? Nemožnost použití with() - syntaktická chyba Proměnné musí být deklarovány před použitím this. s hodnotou null nebo undefined se již nevztahuje na globální proměnnou window.color = "red"; function sayColor() { alert(this.color); } sayColor(); // hodí chybu ve strktním, jinak „red“ sayColor.call(null); // hodí chybu ve strktním, jinak „red“
ECMAScript 5 – Strict mode this. - musíš použít new jinak je this undifined function Person(name) { this.name = name; } var me = Person("Nicholas"); // vyhodí chybu ve strict Nesmí se objevit duplicity function doSomething(value1, value2, value1) Eval() - bezpečnější obj.eval = ... obj.foo = eval; var eval = ...; for ( var eval in ... ) {} function eval(){} // vše vyhodí chybu
ECMAScript 5 – Strict mode Vlastnosti atributu – porušení je hlášenou chybou ve strictním, ale v normálním jen tiše Např. var person = {}; Object.defineProperty(person, "name", { writable: false, value: "Nicholas" }); // Fails silently in non-strict mode, throws error in strict mode person.name = "John";
ECMAScript 5 – Strict mode Jak nastavit strict mode? - Vložit "use strict"; na začátek skriptu nebo funkce Podpora ve všech nejnovějších prohlížečích - až IE 10 viz. http://caniuse.com/use-strict Používat? ANO – především u větších projektů, dobrá podpora v prohlížečích
ECMAScript 5 – Strict mode Odkud čerpat: http://dmitrysoshnikov.com/ecmascript/es5-chapter-2-strict-mode/ Odkud jsem čerpal i já: http://www.novogeek.com/post/ECMAScript-5-Strict-mode-support-in-browsers-What-does-this-mean.aspx http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/ http://www.nczonline.net/blog/2012/03/13/its-time-to-start-using-javascript-strict-mode/