严格模式

什么是严格模式

严格模式(strict mode),采用具有限制性的JavaScript用法,在严格的条件下运行JS代码。

主要功能

  1. 消除了JavaScript语法中的一些不合理,不严谨之处,减少了一些怪异行为
  2. 消除了代码运行的一些不安全之处,保证代码运行的安全
  3. 提高编译器效率,增加运行速度
  4. 禁用了在ECMAScript的未来版本中可能会使用的一些语法

开启严格模式

  • 为脚本开启严格模式

    <script>
        'use strict';
        // 下方的代码将按照严格模式执行代码
    </script>
    // or
    <script>
        (function() {
    	  	'use strict';
            // ....
        })();
    </script>
  • 为函数开启严格模式

    function fn() {
    	'use strict';
       	// 只给该函数开启严格模式
    }

严格模式下的变化

  1. 变量必须先声明再使用

  2. 禁止删除已声明的变量

    var a = 0;
    delete a;	// ERROR
  3. this指向

    // 严格模式下全局作用域中函数中的this指向undefined,而不是window
    function fn() {
    	console.log(this); 	// undefined
    }
    // 构造函数不加new 调用,this会报错
    // 定时器中this仍指向window
    // 事件、对象还是指向调用者
  4. 函数中不能有重名参数

    function fn(a, a) {	// 严格模式下报错
        console.log(a + a);	// 正常模式会输出4
    }
    fu(1, 2);
  5. 不允许在非函数代码块中声明函数

    if(true) {
        function fn() {	// ERROR
            
        }
    }
  6. ……

参考

MDN


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!

高阶函数与闭包 上一篇
防抖与节流 下一篇