当前位置:嗨网首页>书籍在线阅读

11-严格模式

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

7.11 严格模式

ES5的语法允许存在隐式全局变量,而这正是那些令人懊恼的编程错误的源头。简而言之,如果忘记使用 var 声明某个变量,JavaScript会不假思索地认为开发人员在引用一个全局变量。如果该全局变量不存在,它会替开发人员创建一个!大家可以想象一下这会造成什么问题。

出于这个(以及其他的)原因,JavaScript引进了严格模式,它能阻止隐式全局变量。在开始编写代码之前,单独插入一行字符串 "use strict" (单引号和双引号都可以)就可以启用严格模式。如果在全局作用域中这么做,整个脚本会以严格模式执行。而如果在函数中使用它,该函数就会以严格模式执行。

因为在全局作用域中使用严格模式之后,它会应用于所有脚本代码,所以使用时要谨慎一些。很多流行的网站在部署前会整合所有脚本,一旦某个脚本文件中开启了全局严格模式,那么所有的文件都会启用这个模式。当然,如果所有脚本都正常工作就万事大吉了,但往往不会这么顺利。所以通常不建议在全局作用域中使用严格模式。如果不想在每个函数中都开启一次严格模式(谁会愿意这么麻烦呢?),那么可以将所有代码封装在一个立即执行的函数中(将在第13章中了解更多):

(function() {
    'use strict';
    // 所有代码从这里开始...代码会按照严格模式执行,不过严格模式不会干扰组合在一  
    // 起的其他脚本
})(); 

严格模式通常被认为是个好东西,推荐使用它。如果使用了格式检查工具(应该这么做),它会帮助用户从类似的问题中解脱出来,而这种双重校验只会带来更多的好处。

想要了解更多严格模式的用途,欢迎阅读MDN关于严格模式的文章 (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode)。