tabliu

大踏步走

JavaScript学习笔记(21)- ES5严格模式

JavaScript学习笔记。本笔记是基于在腾讯课堂《Web前端开发之JavaScript精英课堂【渡一教育】》课程学习过程中记录的一些提纲和关键点。
强烈推荐想要进行js入门学习来听听,尤其是前面姬成讲的基础知识点。

前述

现在浏览器调用的js方法是基于ES3.0的和ES5.0的新增方法。
如果ES3.0的和ES5.0产生冲突时,使用ES3.0的方法;

严格模式的定义

ES3.0的和ES5.0产生冲突时,使用ES5.0的方法来解决,这种模式就是ES5.0的严格模式;
使用严格模式不在兼容ES3.0的一些不规则语法,使用全新的ES5.0规范。

严格模式的使用

在逻辑代码的最顶端加入字符串:"use strict",表示启用ES5.0的严格模式。

在严格模式下,一些方法不能被使用。比如:

"use strict"

function test() {
console.log(arguments.callee);
}

test();

执行代码会报错:

js_test29.html:17 Uncaught TypeError: ‘caller’, ‘callee’, and ‘arguments’ properties may not be accessed on strict mode functions or the arguments objects for calls to them

严格模式的两种使用方式

  • 全局严格模式:在整段代码的最顶端添加"use strict"
  • 局部函数内严格模式:在该函数代码的最顶端添加"use strict",推荐使用。

严格模式的使用会向下兼容,不会对不兼容的浏览器产生影响。

严格模式的规则

with方法不可用

"use strict"

with(document) {
  write('abc');
}

arguments.callee方法不可用

func.caller方法不可用

变量赋值前必须声明

局部的this必须被赋值使用

预编译时,局部定义的this不再指向window,默认指向空,所以必须被赋值使用,而且this指向所赋值;如果没有赋值使用,则报错。

在全局里this还是指向window

拒绝使用重复的参数和属性名

本节完。