我查看了一些库,看起来他们没有在文件或函数级别上包含"use strict";
行。因此,如果开发人员启用严格模式,那么我们如何知道库是否兼容?可能有奇怪的功能或浏览器特定的问题,当严格模式打开时不易察觉,因此错过,直到为时已晚!
答案 0 :(得分:2)
当然,"use strict"
当然可以是used at the top of a file of concatenated scripts (MDN),只要它们都是严格模式脚本,一切都会花哨的:如果没有,或者有严格/非严格脚本的混合,抛出的错误的可能性通常不会被抛出。
使用它的最简单方法是将其保留在开发中并在生产代码中将其删除:您知道应该做什么,并且能够查找/纠正错误,因此任何严格模式错误都只会用于改善您的代码。一旦投入生产,严格模式实际上只能为用户“破坏”您的网站,除非他们足够精明,可以调试并向您报告(不太可能)。 由于严格模式是javascript的限制形式,因此放松语法比收紧错误更容易造成错误。(主要的例外是eval
可以开始“泄漏”当删除strict-mode时,变量进入周围范围。)
除此之外,您仍然可以连接脚本,但在函数中仅包含严格安全的脚本以使用按功能严格模式。在这种情况下,您不必为每个原子函数执行此操作,只需将整个脚本包装在函数中:
(function(){
"use strict"
// My strict-mode script or scripts
})();
// non-strict safe scripts
当您考虑到只需要执行一次并且可以将所有严格模式脚本粘贴到该函数中时,并不是更多的字符。
我发现,由于严格模式的目标是“永远不会意外地创建全局变量”,因此我必须明确指出{{1}对于我想要全局的任何变量。