最近通过Crockford的JSLint运行了一些我的JavaScript代码,给出了以下错误:
第1行问题1:缺少“使用严格”声明。
做一些搜索,我意识到有些人加入"use strict";
了他们的JavaScript代码。一旦我添加了语句,错误就会停止显示。不幸的是,谷歌没有透露这个字符串声明背后的历史。当然它必须与浏览器如何解释JavaScript有关,但我不知道效果会是什么。
那么它是"use strict";
什么,它意味着什么,它是否仍然相关?
当前任何浏览器是否响应"use strict";
字符串或是否供将来使用?
发布于 2018-09-25 09:26:35
需要注意的是,所有的硬件程序员:应用"use strict"
现有代码都是危险的!这个东西不是一些感觉良好,快乐的贴纸,你可以打上代码,让它“更好”。有了"use strict"
编译指示,浏览器会突然发现以前从未投过的随机位置的异常只是因为在那个位置你正在做一些默认/松散的JavaScript快乐允许但严格的JavaScript憎恶!你可能有严格的违规行为隐藏在代码中很少使用的调用中,这些调用只会在最终运行时抛出异常 - 例如,在付费客户使用的生产环境中!
如果您打算采取行动,最好同时应用"use strict"
全面的单元测试和严格配置的JSHint构建任务,这将使您确信模块中没有黑暗的角落会因为您而可怕地爆炸已经开启严格模式。或者,嘿,这是另一种选择:只是不添加"use strict"
到任何遗留代码中,它可能更安全,老实说。 绝对不要添加"use strict"
到您不拥有或维护的任何模块,例如第三方模块。
当我采纳时,我的项目不是一个绿地项目"use strict"
。结果,我的IDE充满了红色标记,因为我没有"use strict"
一半的模块,JSHint抱怨这一点。这让我想起了将来我应该做什么重构。我的目标是由于我所有遗失的"use strict"
陈述而成为红色标记,但现在还需要几年的时间。
发布于 2018-09-25 09:51:05
这是ECMAScript 5的一个新功能.John Resig写了一个很好的摘要,只是一个放在JavaScript文件中的字符串(位于文件顶部或函数内部),如下所示:
"use strict";
现在将它放在你的代码中不应该导致当前浏览器出现任何问题,因为它只是一个字符串。如果代码违反了编译指示,将来可能会导致代码出现问题。例如,如果目前foo = "bar"
没有foo
先定义,那么代码将开始失败......在我看来这是一件好事。
https://stackoverflow.com/questions/-100003383
复制相似问题