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.