严格模式

严格模式是一种特殊的运行模式,他修复了部分语言上的不足,提供更强的错误检查,并增强安全性。

在js文件开头引入'use strict'使整个js代码都在严格模式下进行

1.with语句会抛错误
2.未声明的变量被赋值会报错         / /没有声明就赋值的变量,相当于是定义了一个全局变量,通过window.x可以访问
3.arguments在严格模式下变为静态,传入的参数与arguments无关系
4.delete会报错      // 普通模式下,在函数中删除参数,不会成功,但也不报错,会返回false。在严格模式中,删除参数或函数名会报语法错。
5.对象的重复属性名会报错      //普通模式下,重复命名,最后的赋值会覆盖前面的,不会报错。严格模式下,重复命名,会报语法错。
6.禁止八进制变量
7.eval被认定为关键字,另外eval的参数中若有定义变量的语句,在严格模式下只是一段平凡的字符串,使用typeof检测不到在eval里定义的变量类型   //严格模式下,eval,arguments为关键字

 普通模式下,eval内部定义的变量,在eval外部也可以访问。严格模式下,eval有独立作用域,在eval之外不能访问eval内部变量,类似于一个局部作用域

8.对configurable为false的属性删除时,普通模式删除失败,返回false,不报错;严格模式,会报typeerror。

原文地址:https://www.cnblogs.com/family-626-77/p/5849765.html