严格模式
什么是严格模式
JavaScript 除了提供正常模式外,还提供了严格模式(strict mode) ES5 的严格模式是采用具有限制性的 JavaScript 变体的一种方式,即在严格的条件下运行 JS 代码 (IE10以上版本)
严格模式对正常的 JavaScript 语义做了一些修改:
- 消除了 JavaScript 语法的一些不合理,不严谨之处,减少了一些怪异行为
- 消除代码运行的不安全之处,保证代码运行的安全
- 提高编译器效率,增加了运行速度
- 禁用了在 ECMAScript 的未来版本中可能会定义的一些语法,为未来版本的 JavaScript 做好铺垫,比如一些保留字:class,rnum,export,extends,import,super 不能做变量名
开启严格模式
严格模式可以应用到整个脚本或个别函数中,因此在使用时,我们可以将严格模式分为为脚本开启严格模式和为函数开启严格模式两种情况
为脚本开启严格模式
为整个脚本文件开启严格模式,需要在所有语句之间放一个特定语句"use strict";(或 ‘use strict‘??
严格模式中的变化
严格模式 JavaScript 的语法和行为,都做了一些改变
变量规定
- 正常模式中,一个变量未声明就赋值,默认为全局变量;严格模式中,变量必须先用 var等 命令声明,然后使用
- 严禁删除已经声明后的变量
严格模式下的 this 指向问题
- 以前在全局作用域中 this 指向 window 对象,严格模式下全局作用域中 this 指向 undefined
- 以前构造函数不加 new 也可以调用,当普通函数,this 指向全局对象,严格模式,构造函数不加 new 调用,this 指向的undefind 如果给它赋值 会报错
函数变化
- 函数不能有重名的参数
- 函数必须声明在顶层 新版本的 JavaScript 会引入"块级作用域"(ES6 中以引入),为了与新版本接轨,不允许在非函数的代码块内声明函数
严格模式
原文:https://www.cnblogs.com/landuo629/p/12554244.html