Strict Mode
Με το strict mode
ο κώδικας γίνεται πιο αυστηρός, πιο γρήγορος και πιο ασφαλής.
Το strict mode
εισάγεται στην πρώτη γραμμή του κώδικα και ισχύει για όλο το σκριπτ (global) ή επιλεκτικά σε μία ή περισσότερες συναρτήσεις.
Η εντολή για strict mode
είναι:
'use strict';
Στα molules
το strict mode
είναι προκαθορισμένο και δεν χρειάζεται να δηλωθεί.
Οι περιορισμοί και αλλαγές που εισάγει είναι:
1. Αδήλωτες μεταβλητές
'use strict'; x = "hello world";
Στο παραπάνω παράδειγμα θα προκύψει το λάθος: x is not defined
.
2. Καταχώρηση τιμής σε read-only μεταβλητές
'use strict'; undefined = 5;
Στο παραπάνω παράδειγμα θα προκύψει το λάθος: Cannot assign to read only property
.
3. Διαγραφή μη διαγράψιμων μεταβλητών ή αντικειμένων
'use strict'; delete Object.prototype;
Στο παραπάνω παράδειγμα θα προκύψει το λάθος: Cannot delete property ...
.
4. Μοναδικά ονόματα παραμέτρων
'use strict'; function sum(a, a, c) { return a + a + c; }
Στο παραπάνω παράδειγμα θα προκύψει το λάθος: Duplicate parameter name not allowed in this context
.
5. Οκταδικές τιμές
'use strict'; let a = 0o10; let b = 015;
Οι οκταδικές τιμές έχουν το πρόθεμα 0o
. Στο παραπάνω παράδειγμα, στη γραμμή 2, θα προκύψει το λάθος: Octal literals are not allowed in strict mode
.
6. Ορισμός ιδιοτήτων σε πρωταρχικές τιμές (primitive values)
'use strict'; false.true = ''; (100).go = 'home'; 'hello'.there = 'how are you';
Οι παραπάνω γραμμές είναι λάθος. Στο παραπάνω παράδειγμα θα προκύψει το λάθος: Cannot create property ...
.
7. Επιτρέπονται ονόματα ιδιοτήτων με ίδιο όνομα σε ένα αντικείμενο
'use strict'; let b = { p: 1, p: 2 };
Δεν θα προκύψει λάθος στο παραπάνω παράδειγμα.
8. Αλλαγή στην τιμή του this
'use strict'; function fun() { return this; } console.log(fun());
Επιστρέφει undefined
αντί του window
χωρίς το use strict
.
9. Δεσμευμένες λέξεις
Οι λέξεις - προσδιοριστές: implements, interface, let, package, private, protected, public, static, και yield, δεσμεύονται από την javascript.