您的位置:首页 > Web前端 > JavaScript

JS-严格模式篇

2020-07-15 05:07 78 查看

1. 严格模式概述

  • 严格模式对javaScript语义做了一些更改
  • 消除了javaScript语法的一些不合理,不严谨之处,减少一些怪异行为
  • 消除代码运行的一些不安全之处
  • 提高编译效率,增加运行速度
  • 禁用了在ECMAScript的未来版本中可能会定义的一些语法,为未来新版本的javaScript做好铺垫。
    比如一些保留字:class,enum,export,extends, import,super不能做变量名

2. 开启严格模式(IE10以前会忽视)

  • 严格模式可以应用到脚本或个别函数中。
  • 为脚本开启严格模式:需要在所有语句之前(js的第一行)放一个特定句"use strict";如果整个脚本的语句都写在一个自调用函数里面,自调用函数里面的第一行写上"use strict";
  • 为某个函数开启严格模式:在函数里面的第一行写上"use strict";

3. 严格模式下变量规定

  • 在正常模式中一个变量没有声明直接赋值,默认为全局变量。严格模式禁止这种用法,
    变量必须先声明,然后再使用。
  • 严禁删除已经声明的变量。例如:delete 变量;语法是错误的

4. 严格模式下的this指向

  • 以前在全局作用域函数中的this指向window对象。严格模式下全局作用域函数中的this是undefined;
  • 以前构造函数不加new也可以调用,当普通函数,this指向全局对象。严格模式下,如果构造函数不加new调用,this会报错。加new调用this还是指向实例对象;
  • 定时器中的this还是window,没有变化;
  • 事件、对象还是指向调用者。

5. 严格模式下的函数变化

  • 函数中不能有重名的参数
  • 函数必须声明在最顶层(外面),新版本的javaScript会引入"块级作用域"(ES6已引入)。
  • 为了与新版本接轨,不允许在非函数的代码内声明函数(如:if、for)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: