为了账号安全,请及时绑定邮箱和手机立即绑定

在JavaScript中“使用严格”是做什么的,它背后的理由是什么?

在JavaScript中“使用严格”是做什么的,它背后的理由是什么?

慕码人8056858 2019-06-01 14:11:42
在JavaScript中“使用严格”是做什么的,它背后的理由是什么?最近,我运行了一些JavaScript代码在克罗克福德的贾林特,并给出了以下错误:第1行字符1的问题:缺少“使用严格”语句。做些搜索,我意识到有些人"use strict";他们的JavaScript代码。添加语句后,错误就不再出现了。不幸的是,谷歌并没有透露这个字符串声明背后的历史。当然,这肯定与浏览器如何解释JavaScript有关,但我不知道会产生什么效果。所以什么是"use strict";总之,这意味着什么,它是否仍然相关?当前浏览器是否响应"use strict";字符串还是将来用的?
查看完整描述

4 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

引用一些有趣的部分:

严格模式是ECMAScript 5中的一个新特性,它允许您将程序或函数置于“严格”操作上下文中。这种严格的上下文阻止了某些操作的执行,并引发了更多的异常。

以及:

严格模式在以下几方面有所帮助:

  • 它捕捉到一些常见的代码bloopers,并抛出异常。
  • 当采取相对“不安全”的操作(例如访问全局对象)时,它会防止或抛出错误。
  • 它禁用了那些令人困惑或思想不清的特性。

还请注意,您可以将“严格模式”应用于整个文件.也可以只用于特定的函数。(仍引用John Resig的文章):

// Non-strict code...(function(){
  "use strict";

  // Define your library strictly...})();// Non-strict code...

如果必须混合新旧代码,这可能会有所帮助;-)

所以,我想这有点像"use strict"您可以在perl中使用(因此得名?)通过检测更多可能导致断裂的东西,它可以帮助你减少错误。

严格模式现在所有主要浏览器都支持..如果您正在编写JavaScript本机ECMAScript模块(与importexport语句),则始终启用严格模式,并且不能禁用。


查看完整回答
反对 回复 2019-06-01
?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

这是ECMAScript 5的一个新特性

它只是放入JavaScript文件(文件顶部或函数内部)中的一个字符串,如下所示:

"use strict";

现在将它放入您的代码中不会对当前浏览器造成任何问题,因为它只是一个字符串。如果您的代码违反了该实用程序,它可能会在将来引起您的代码问题。例如,如果您当前有foo = "bar"不定义foo首先,您的代码将开始失败.在我看来这是一件好事。


查看完整回答
反对 回复 2019-06-01
?
万千封印

TA贡献1891条经验 获得超3个赞

声明"use strict";指示浏览器使用严格模式,这是一组简化的、更安全的JavaScript特性集。

功能清单(并非详尽无遗)

  1. 不允许全局变量。(渔获物失踪var声明和变量名称的键入)

  2. 无声的失败分配将在严格模式下抛出错误(赋值)。NaN = 5;)

  3. 删除不可删除属性的尝试将引发(delete Object.prototype)

  4. 要求对象文本中的所有属性名称都是唯一的(var x = {x1: "1", x1: "2"})

  5. 函数参数名称必须是唯一的(function sum (x, x) {...})

  6. 禁止八进制语法(var x = 023;有些开发人员错误地认为前面的零不会改变数字。)

  7. 禁止with关键词

  8. eval在严格模式下不引入新变量。

  9. 禁止删除普通名称(delete x;)

  10. 禁止绑定或指定名称evalarguments以任何形式

  11. 严格模式不别名arguments对象的形式参数。(即function sum (a,b) { return arguments[0] + b;}这是因为arguments[0]注定要a诸若此类。)

  12. arguments.callee不支持


查看完整回答
反对 回复 2019-06-01
  • 4 回答
  • 0 关注
  • 517 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信