Articles

JavaScript „use strict”

'use strict'; określa, że kod JavaScript powinien być wykonywany w trybie „strict”. Ułatwia to pisanie dobrego i bezpiecznego kodu JavaScript. Na przykład,

myVariable = 9;

Tutaj, myVariable jest tworzona bez deklarowania. Działa to jako zmienna globalna w JavaScript. Jednakże, jeśli użyjesz tego w trybie ścisłym, program wyrzuci błąd. Na przykład,

'use strict';// ErrormyVariable = 9;

Powyższy kod wyrzuca błąd, ponieważ zmienna myVariable nie jest zadeklarowana. W trybie ścisłym nie można używać zmiennych bez ich zadeklarowania.

Aby wskazać, że ten program jest w trybie ścisłym, użyliśmy

'use strict';

na górze programu.

Tryb ścisły można zadeklarować poprzez dodanie 'use strict'; lub "use strict"; na początku programu.

Kiedy zadeklarujesz tryb ścisły na początku programu, będzie on miał zasięg globalny i cały kod w programie będzie wykonywany w trybie ścisłym.

Tryb ścisły w zmiennej

W trybie ścisłym, użycie zmiennej bez jej zadeklarowania powoduje błąd.

Uwaga: Musisz zadeklarować tryb ścisły na początku programu. Jeśli zadeklarujesz tryb ścisły poniżej jakiegoś kodu, nie będzie on działał.

Na przykład,

console.log("some code");// 'use strict' is ignored// must be at the top"use strict";x = 21; // does not throw an error

Tryb ścisły w funkcji

Możesz również użyć trybu ścisłego wewnątrz funkcji. Na przykład,

myVariable = 9;console.log(myVariable); // 9function hello() { // applicable only for this function 'use strict'; string = 'hello'; // throws an error}hello();

Jeśli użyjesz 'use strict'; wewnątrz funkcji, kod wewnątrz funkcji będzie w trybie ścisłym.

W powyższym programie, 'use strict'; jest użyty wewnątrz funkcji hello(). Stąd, tryb ścisły obowiązuje tylko wewnątrz funkcji.

Jak widać, na początku programu, myVariable jest użyty bez deklaracji.

Jeśli zadeklarujesz 'use strict'; na początku programu, nie możesz użyć zmiennej bez zadeklarowania jej również wewnątrz funkcji. Na przykład,

// applicable to whole program'use strict';function hello() { string = 'hello'; // throws an error}hello();

Uwaga : Tryb ścisły nie ma zastosowania do deklaracji blokowych z {} nawiasami klamrowymi.

Rzeczy niedozwolone w trybie ścisłym

1. Niezadeklarowana zmienna jest niedozwolona.

'use strict';a = 'hello'; // throws an error

2. Niezadeklarowane obiekty są niedozwolone.

'use strict';person = {name: 'Carla', age: 25}; // throws an error

3. Usuwanie obiektu jest niedozwolone.

'use strict';let person = {name: 'Carla'};delete person; // throws an error

4. Powielanie nazwy parametru jest niedozwolone.

"use strict";function hello(p1, p1) { console.log('hello')}; // throws an errorhello();

5. Przypisywanie do właściwości typu non-writable nie jest dozwolone.

'use strict';let obj1 = {};Object.defineProperty(obj1, 'x', { value: 42, writable: false });// assignment to a non-writable propertyobj1.x = 9; // throws an error

6. Przypisywanie do właściwości typu getter-only nie jest dozwolone.

'use strict';let obj2 = { get x() { return 17; } };// assignment to a getter-only propertyobj2.x = 5; // throws an error

7. Przypisywanie do nowej właściwości na obiekcie nierozszerzalnym nie jest dozwolone.

'use strict';let obj = {};Object.preventExtensions(obj);// Assignment to a new property on a non-extensible objectobj.newValue = 'new value'; // throws an error

8. Składnia oktalna nie jest dozwolona.

'use strict';let a = 010; // throws an error

9. Nazwa zmiennej arguments i eval nie są dozwolone.

'use strict';let arguments = 'hello'; // throws an errorlet eval = 44;

10. Nie można również używać tych zarezerwowanych słów kluczowych w trybie ścisłym.

implementsinterfaceletpackageprivateprotectedpublicstaticyield

Korzyści wynikające z zastosowania trybu ścisłego

Zastosowanie trybu ścisłego:

  • pomaga pisać czystszy kod
  • zmienia wcześniej akceptowane ciche błędy (zła składnia) na prawdziwe błędy i rzuca komunikat o błędzie
  • ułatwia pisanie „bezpiecznego” JavaScriptu

.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *