24

使用此页面:

<!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仍然成功,尽管它“是全局对象的属性,因为它是通过变量声明创建的,因此具有DontDelete 属性”:

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

是否可以在 FireBug 和/或 Chrome 的控制台中启用“严格模式”?

4

5 回答 5

14

firebug 控制台通过将所有代码包装在“eval”调用中来工作,因此脚本中的第一条语句不再是“use strict” - 因此它被禁用。您可以尝试将代码包装在一个函数中以对该特定函数强制“使用严格”,但我所知道的最佳解决方案是跳过控制台并直接在页面本身中进行测试。

于 2012-07-26T20:44:18.030 回答
4

使用 shift+enter 输入“使用严格”

像这样 在此处输入图像描述

于 2016-10-26T02:31:17.393 回答
1

如果你只是在控制台中测试一个函数,你也可以把'use strict'作为函数声明的第一行。

于 2015-10-23T19:18:41.027 回答
1

Chrome:'use strict';在您的代码行中添加前缀(和/或 shift+enter 用于多行)

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

于 2019-05-02T12:17:54.210 回答
-2

在 Chrome 上,转到“chrome://flags”,然后“启用实验性 JavaScript”。重新启动。

于 2018-09-08T12:37:37.190 回答