提醒各位辛苦的程序员:应用"use strict"
到现有代码可能是危险的!这东西不是什么让人感觉良好、面带笑容的贴纸,您可以贴在代码上使其“更好”。使用"use strict"
pragma,浏览器会突然在随机的地方抛出异常,而这些地方以前从未抛出过,因为在那个地方你正在做一些默认/松散的 JavaScript 高兴地允许但严格的 JavaScript 憎恶的事情!您可能在代码中很少使用的调用中隐藏了严格性违规,这些调用只会在它们最终运行时抛出异常 - 例如,在您的付费客户使用的生产环境中!
如果您打算冒险,最好"use strict"
与全面的单元测试和严格配置的 JSHint 构建任务一起应用,这将使您确信module的黑暗角落不会仅仅因为您已开启严格模式。或者,嘿,这是另一种选择:只是不要添加"use strict"
到您的任何遗留代码中,老实说,这样可能更安全。 绝对不要添加"use strict"
到您不拥有或维护的任何module,如第三方module。
我认为即使它是一种致命的笼中动物,"use strict"
也可以是好东西,但你必须做得对。严格执行的最佳时间是当您的项目处于绿地并且您从头开始时。配置JSHint/JSLint
所有警告和选项,尽您的团队所能承受的范围,获得一个良好的构建/测试/断言系统Grunt+Karma+Chai
,然后像"use strict"
. 准备好解决许多琐碎的错误和警告。如果JSHint/JSLint
产生任何违规,则通过将构建配置为 FAIL 来确保每个人都了解严重性。
当我采用"use strict"
. 结果,我的 IDE 充满了红色标记,因为我的"use strict"
一半module都没有,而 JSHint 对此表示不满。这是对我未来应该进行哪些重构的提醒。由于我所有遗漏的"use strict"
陈述,我的目标是免于红印,但那是几年之后的事了。