什么是严格模式
JavaScript中 除了提供正常模式 还提供了严格模式 (strict mode)
es5中的严格模式是采用具有限制性的JavaScript变体中的一种方式
即在严格的条件下运行js代码
严格模式在ie10以上版本才会被支持
严格模式对正常的js语义做了一些修改
1 消除了js语法中的一些不合理,不严谨的地方 减少了一些怪异行为
2 消除了代码运行的一些不安全的地方 保证代码运行的安全
3 提供编译器效率 增加运行速度
4 .禁用了在 ECMAScript 的未来版本中可能会定义的一些语法,为未来新版本的 Javascript 做好铺垫。比如一些保留字如:class,enum,export, extends, import, super 不能做变量名
开启严格模式
严格模式苦于应用到整个脚本或者个别函数之中 因此在使用的时候 我们可以把严格模式分为
以下两种
为脚本开启严格模式
为整个脚本开始严格函数 需要在所有语句之前放一个特定语句 ’use strict’
有点script 基本是严格模式 有的是正常模式 这样不利于我们合并文件
所以苦于将整个脚本文件放在一个立即执行的匿名函数之中
这样独立创建一个作用域而不影响其他script脚本文件
如下
为函数开启严格模式
如下 我们也可以为一个函数开启严格模式
严格模式的变化
变量规定
变量必须先声明
在正常模式下 如果一个变量没有声明就赋值 默认是全局变量
但是在我们严格模式下 我们严禁 这种行为 所以变量都必须要用var来声明 然后在使用
不然就会报错
不能随意删除已经声明好的变量
this指向问题
在正常模式下
我们全局作用域下的一般函数this指向window
但是如果是在严格模式下
在全局 作用域中的函数中的this是underfined
所以在严格模式下 构造函数不加new调用 this就指向underfined