我们必须注意JavaScript的“严格模式”
Must we pay attention to JavaScript "strict mode"?
阅读ECMAScript 5的严格模式,我了解到:
某些语言函数如此普遍,以至于执行运行时检查具有相当大的性能成本。一些严格的模式调整加上要求用户提交的JavaScript是严格模式代码和它以某种方式被援引,大大减少了需要对于运行时检查。
这些调整可以是:
- 永远不要使用
null
/undefined
作为call
/apply
方法的第一个参数。 不要在函数中创建新的全局变量。
问题:
-
是否有一些JavaScript框架在严格模式下编写?所以我们可以相信我们的"严格"代码不会被浪费?
-
我是否应该开始关注
strict mode
?我的意思是,它是否被盲目地当作一种好的做法?
-
是的,大多数框架已经开始使用严格模式。也许还没有完成,但距离很近。John Resig
说了这么多,我相当确定jQuery现在是es5严格兼容的。一旦该语言的实现可用(以便可以测试该前提),我将很高兴地将jQuery切换到严格模式下专门工作。
-
建议使用,但不是必需的。如果您现在开始使用严格模式,您将习惯它,因此您将为新标准做好准备。
关于严格模式的更多信息:
- http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/
- https://developer.mozilla.org/en/JavaScript/Strict_mode
AFAIK jQuery是在严格模式下编写的(编辑:不太理想,但作者说它是兼容的)。Crockford的jslint在一开始就使用了"use strict"(几天前我看到了源代码)。我想说的是,几乎所有现代框架都是严格模式,因为这是框架本身的一个加分点。
即使不是这样,你的工作也没有白费,因为通过坚持严格模式,你可以使你的代码更好(它迫使你避免一些错误)。
相关文章:
- 为什么我的JavaScript在Safari上的严格模式下不能正常工作
- SyntaxError:'带有'语句在严格模式下无效
- ECMAScript 6的哪些特性意味着严格模式
- 在严格模式下不允许使用八进制文本
- AngularJS中的严格模式过滤器
- 为什么Chrome在“严格模式”下使用块内的功能时仍然保持沉默
- 如何在严格模式下实现以下JavaScript闭包
- 在严格模式下间接调用eval.x怎么了
- javascript严格模式下oop函数的全局初始化
- JS:两个或多个非严格模式下具有相同名称的对象属性
- SyntaxError:严格模式不允许在词法嵌套语句中声明函数
- 在Javascript严格模式下,您可以将参数分配给另一个变量
- 在[background:url({{XXX}})无重复中心的严格模式下,不允许分配只读属性
- JavaScript的严格模式是如何实现的
- 如何在严格模式下将附件下载为二进制数据
- j查询页面淡入淡出和严格模式
- 可以在没有副作用的情况下删除严格模式吗
- JavaScript:严格模式和对象
- 严格模式下的图像数据数据分配
- 道格拉斯·克罗克福德在严格模式示例中是错误的吗?