严格模式

概述

JavaScript整个脚本语言在设计之初只用了7天,运行非常快也非常简单,导致开发者刚入门时很容易,但到了后期就会发现这门语言其实并不够严谨和不太安全,此时出现一种更为安全和保证代码运行的模式,使其阅读起来更为规范

严格模式设计的目的:

  • 减少语法层面的不合理

  • 不严谨

  • 不安全

  • 怪异行为

使用方法:

  1. //声明方式
  2. 'use strict';

兼容性:

  • ie10+都支持

区别

在严格模式下的区别有:

  • 变量层面

    • 全局变量声明时必须用var,否则使用严格模式时变量为undefined
    • 保留字和关键字不允许使用,如var eval
    • 全局变量的delete操作符失效问题(静默失败),通过报错方式解决
  • 对象层面

    • 对象属性描述符造成的操作失败的问题(静默失败),报错
    • for...in循环不会报错
  • 函数层面

    • 函数参数需要唯一的
    • 形参实参就没有相互映射关系
    • callercallee会报错
    • arguments.callee指的是调用函数本身
    • 函数名称.caller是函数属性,它指向当前调用函数的作用域
    • evalwith语句报错