为什么使用 use strict

Posted 春眠不觉晓

tags:

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

进入标志:

  "use script";

使用方式:

  可以在 js 代码的第一行,也可以使用在函数中。但是写在 js 代码第一行不利于文件合并,因此可以写在一个自调用函数的第一行

使用目的:

  解决 javascript 的不合理不严谨以及不安全的地方,提高编译效率,增加运行速度。为以后的 javascript 做更好的铺垫。

规定:

1、变量声明后才能使用

2、限制一些动态绑定:禁止使用 width 语句、创设 eval 作用域(创建的变量只能在 eval 语句中使用)

3、增强安全措施:禁止 this 指向全局对象(window->undefined)、禁止在函数内部遍历调用栈(caller/arguments)

4、禁止删除变量(只有 configurable 设置为 true 的对象才能被删除,delete 对象)

5、显示报错:修改对象的只读属性、使用 get 方法读取的属性进行赋值、对禁止扩展的对象添加属性、删除一个不可删除的属性

6、重命名:对象不能有同名属性、函数不能有同名参数

7、禁止八进制表示法,在 ES5 中也修改了 parseInt() 的行为,如果传入八进制数字,会被当作是以0开头的十进制字面量

8、arguments 对象限制:不允许对 arguments 赋值、不再追踪参数的变化、淘汰 arguments.callee 和 arguments.aller

9、不允许在非函数的代码块内声明函数

10、增加部分关键字和保留字

11、语句:语句末尾建议使用分号,防止压缩代码导致出错、条件控制语句始终使用代码块,即使代码块中只有一条语句

好处:

1、帮助检查对象的重复键

2、未声明变量,导致变量暴露在全局,导致重写覆盖等

3、提示函数重复参数

4、限制函数的arguments,修改 eval 函数,增加 eavl 作用域,修改 this 指向;防止因不合适的书写导致的错误

5、增加了部分保留字,便于以后 javascript 代码过度

6、语句末尾建议使用分号,防止压缩代码导致出错

以上是关于为什么使用 use strict的主要内容,如果未能解决你的问题,请参考以下文章

带有“非简单参数”的函数为什么不能包含 "use strict" 指令

什么是ES5?js中的'use strict'是什么?目的是什么?

Javascript 严格模式use strict详解

Javascript 严格模式use strict详解

为啥JS/TS里都会有“use strict“

当 /// 引用在“use strict”之后时,为啥打字稿会抱怨?