Строгий режим NodeJS

Есть ли преимущества использования "use strict" в NodeJS? Например, использование глобального объекта не является хорошей идеей, поскольку все ваши запросы будут изменять указанный объект (конечно, при условии, что рассматриваемый объект должен быть уникальным для каждого пользователя). В этом случае было бы неплохо использовать строгий режим, не так ли?

Мне кажется, что строгий режим - это хорошая идея для пары с Node, но я не смог найти никаких плюсов или минусов для него через Google.

Отказ от ответственности: я знаю, что делает use strict, этот вопрос касается серверных плюсов и минусов!


person Sterling Archer    schedule 20.05.2014    source источник


Ответы (1)


Что ж, четкость и скорость.

В отличие от популярных ответов и вопросов в SO - настоящая основная цель строгого режима и директивы "use strict" - устранить динамическая область видимости в JavaScript, поэтому изменение аргументов с помощью arguments и изменение самого arguments недопустимо, почему with не разрешено и т. д.

Ясность

Строгий режим не допускает динамического определения области видимости, поэтому вы всегда можете статически узнать, на что ссылается переменная. with, изменение переменных с помощью аргументов и другие типы нестатической области видимости делают код менее читаемым в нестрогом режиме:

// example from referenced thread
// global code
this.foo = 1;

(function () {
  eval('var foo = 2');

  with ({ foo: 3 }) {
    foo // => 3
    delete foo;
    foo // => 2
    delete foo;
    foo // => 1
    delete foo;
    foo // ReferenceError
  }
}());

В строгом режиме можно избежать такой головной боли.

Скорость

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

Использованная литература:

person Benjamin Gruenbaum    schedule 20.05.2014
comment
with и eval в одном примере? Я в шоке, интернет не взорвался! - person Sterling Archer; 20.05.2014
comment
Благодаря дополнительной ясности тестирование становится проще. Небольшие ошибки, например, при присваивании переменных, легче исправить (например, с помощью JSHint) из-за более строгих требований. - person Prem; 10.08.2015
comment
Мне очень понравился этот ответ, он ясный и лаконичный. Вы нашли время, чтобы написать действительно хороший ответ, спасибо вам за это. - person JAY-DEV; 16.08.2020