use strick

'use strick' - ключевые слова которые включают "строгий режим". Это особенность спецификации ES5, которая накладывает ряд ограничений на языковые конструкции, тем самым исключая некоторые подводные камни и предовращая ошибки. В этом режиме выкидывается больше исключений, как правило с более подробным описание ошибки.

Если вы включили строгий режим, то его больше нельзя выключить

Строгий режим можно включить как на весь файл, так и на отдельную функцию:

function test(){
    'use strick'
    ... // хорошая практика, используемая в написании своих библиотек
}

Это удобно применять если мы пишем свою библиотеку, и не хотим испортить код который будет использовать её.

Нужно также помнить что при объединении файл с использованием strick с файлом non-strick = в результате мы получим файл с 'use strick'.

Опасный код, который блокирует strick

Объявление переменных без ключевых слов var, let, const:

unknownVariable = 17; // throws a ReferenceError

Если попытаться присвоить NaN переменной. Если попытаться удалить неудаляемые свойства:

'use strick'
delete Object.prototype; //TypeError

Строгий редим требует чтобы свойства объекта имели уникальные имена:

'use strict';
var o = { p: 1, p: 2 }; // !!! syntax error

Аналогично, параметры, передоваемые в функцию:

function sum(a, a, c) // !!! syntax error
{
  ...
}

Еще одно отличие строго режима от нестрогого, заключается в том, что при передачи this в строгом режиме в функцию с помощью методов call, apply, bind - это значение не оборачивается в объект. В нестрогом режиме, если передается строка, число и логическая переменная - то она оборачивается в String, Number, Boolean. Если передается null или undefined - объект this становится глобальным. В строгом режиме значение this передается "как есть".

function test(){ return this; };
test() === undefined // false
test.call(2) === 2 //false
test.apply(null) === null //false
test.call(undefined) === undefined //false
test.bind(true) === true //false
//так как все переменные оборачиваются в объект

'use strick'
test() === undefined //true
test.call(2) === 2 //true
test.apply(null) === null //true
test.call(undefined) === undefined // true
test.bind(true) === true //true

В результате, при использовании строгого режима мы сознательно ограничеваем себя от возможных ошибок, связаных с невнимательностью, неаккуратным использованием определенных конструкций.

Материал взят из GetInstance - use strick

results matching ""

    No results matching ""