严格模式
概述
JavaScript整个脚本语言在设计之初只用了7天,运行非常快也非常简单,导致开发者刚入门时很容易,但到了后期就会发现这门语言其实并不够严谨和不太安全,此时出现一种更为安全和保证代码运行的模式,使其阅读起来更为规范
严格模式设计的目的:
减少语法层面的不合理
不严谨
不安全
怪异行为
使用方法:
//声明方式'use strict';
兼容性:
ie10+都支持
区别
在严格模式下的区别有:
变量层面
- 全局变量声明时必须用
var,否则使用严格模式时变量为undefined - 保留字和关键字不允许使用,如
var eval - 全局变量的
delete操作符失效问题(静默失败),通过报错方式解决
- 全局变量声明时必须用
对象层面
- 对象属性描述符造成的操作失败的问题(静默失败),报错
for...in循环不会报错
函数层面
- 函数参数需要唯一的
- 形参实参就没有相互映射关系
caller和callee会报错arguments.callee指的是调用函数本身函数名称.caller是函数属性,它指向当前调用函数的作用域eval和with语句报错
