“使用严格”;看起来很棒,我们真的很想在我们的商店中使用它。但是,我们只是想要它,以便我们(开发人员)可以找到严格性问题。我们非常希望在正常运行之前不会中断我们的实际客户的网站。
现在,我们可以使用一些服务器端逻辑来实现此目的:
{% 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