严格模式
什么是严格模式
严格模式(strict mode),采用具有限制性的JavaScript用法,在严格的条件下运行JS代码。
主要功能
- 消除了JavaScript语法中的一些不合理,不严谨之处,减少了一些怪异行为
- 消除了代码运行的一些不安全之处,保证代码运行的安全
- 提高编译器效率,增加运行速度
- 禁用了在ECMAScript的未来版本中可能会使用的一些语法
开启严格模式
为脚本开启严格模式
<script> 'use strict'; // 下方的代码将按照严格模式执行代码 </script> // or <script> (function() { 'use strict'; // .... })(); </script>
为函数开启严格模式
function fn() { 'use strict'; // 只给该函数开启严格模式 }
严格模式下的变化
变量必须先声明再使用
禁止删除已声明的变量
var a = 0; delete a; // ERROR
this指向
// 严格模式下全局作用域中函数中的this指向undefined,而不是window function fn() { console.log(this); // undefined } // 构造函数不加new 调用,this会报错 // 定时器中this仍指向window // 事件、对象还是指向调用者
函数中不能有重名参数
function fn(a, a) { // 严格模式下报错 console.log(a + a); // 正常模式会输出4 } fu(1, 2);
不允许在非函数代码块中声明函数
if(true) { function fn() { // ERROR } }
……
参考
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!