ES6的严格模式

Posted ranyihang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES6的严格模式相关的知识,希望对你有一定的参考价值。

ES6 的模块自动采用严格模式,不管你有没有在模块头部加上"use strict";。

严格模式主要有以下限制:

    变量必须声明后再使用

    函数的参数不能有同名属性,否则报错

    不能使用with语句

    不能对只读属性赋值,否则报错

    不能使用前缀0表示八进制数,否则报错

    不能删除不可删除的属性,否则报错

    不能删除变量delete prop,会报错,只能删除属性delete global[prop]

    eval不会在它的外层作用域引入变量

    eval和arguments不能被重新赋值

    arguments不会自动反映函数参数的变化

    不能使用arguments.callee以及arguments.caller

    禁止this指向全局对象

    不能使用fn.caller和fn.arguments获取函数调用的堆栈

    增加了保留字(比如protected、static和interface)

其中,尤其需要注意this的限制。ES6 模块之中,顶层的this指向undefined,即不应该在顶层代码使用this。

以上是关于ES6的严格模式的主要内容,如果未能解决你的问题,请参考以下文章

es6要用严格模式

gulp-babel 取消严格模式方法

为啥 `"foo".bar = 42;` 在 ES6 的严格模式下会抛出 `TypeError`?

严格模式

ES6基础3--函数和闭包

es6 一些小知识