“使用严格”;看起来很棒,我们真的很想在我们的商店中使用它。但是,我们只是想要它,以便我们(开发人员)可以找到严格性问题。我们非常希望在正常运行之前不会中断我们的实际客户的网站。

现在,我们可以使用一些服务器端逻辑来实现此目的:

{% if debug %}<script>"use strict";</script>{% endif %}

...除了“use strict”在逐个文件的基础上进行操作之外,因此实际上将不起作用(好吧,除非我们开始在服务器端处理所有JS文件)。

因此,我的问题是:是否在页面加载时执行所有“使用严格”检查以获取检查,还是在页面加载后“使用严格”查找错误? 如果是前者,则可以使用“use strict”,而不必担心,因为我们将在开发中加载站点,然后再进行实时加载。但是,如果是后者,我们似乎就不走运了,因为我们无法测试所有可能的运行时条件(再次,当以前没有错误时,我们不想为我们的用户造成错误)。

最佳答案

是后者。当使用strict mode时,JavaScript解释器可能会在运行时抛出错误消息,而在非严格模式下不会抛出该错误消息。

另一方面,这些错误大多数都是“好错误”,这意味着它们实际上将有助于不破坏您的代码。

例如

function foo() {
    "use strict";
    bar = true;
}

foo();

这会抛出
"ReferenceError: assignment to undeclared variable bar"

在严格模式下,这是的东西。在非严格模式下,我们将只创建一个名为bar的全局变量,这可能不是我们想要的。在许多其他情况下,strict mode会阻止程序员执行愚蠢/错误/有害的操作并抛出错误消息。但同样,您希望拥有这些错误,而不是一些奇怪的错误。

进一步阅读MDN

10-02 14:27
查看更多