Можно включить "строгий режим"; в консоли FireBug и Chrome?

С этой страницы:

<!DOCTYPE html>
<html>
  <head>
    <script>
        "use strict";
        var foo = 2;
        delete foo;
    </script>
  </head>
  <body></body>
</html>

Консоль Firebug дает:

applying the 'delete' operator to an unqualified name is deprecated
>>> foo
ReferenceError: foo is not defined
foo

Но тогда это успешно:

>>> var bar = 2;
undefined
>>> delete bar;
true

Даже если вы закомментируете delete foo; чтобы скрипт не ломался, удаляя bar все еще успешен, несмотря на то, что он "является свойством объекта Global, так как он создается с помощью объявления переменной и поэтому имеет атрибут DontDelete":

>>> foo
2
>>> delete foo
false
>>> var bar = 2;
undefined
>>> delete bar
true

Можно ли включить "строгий режим"; в FireBug и / или в консоли Chrome?

4 ответа

Решение

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

Используйте Shift+ Enter для ввода "использовать строгий"

как это введите описание изображения здесь

Если вы просто тестируете одну функцию в консоли, вы также можете просто поставить 'use strict' в качестве первой строки в объявлении функции.

Хром: поставить 'use strict'; префикс в строке кода (и / или Shift+ Enter для многострочного)

'use strict'; var foo = 2; delete foo;

В Chrome перейдите в "chrome://flags", затем "Включить экспериментальный JavaScript". Перезапустить.

Другие вопросы по тегам