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

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

最近,我运行了一些JavaScript代码在克罗克福德的贾林特,并给出了以下错误:

第1行字符1的问题:缺少“使用严格”语句。

做些搜索,我意识到有些人"use strict";他们的JavaScript代码。添加语句后,错误就不再出现了。不幸的是,谷歌并没有透露这个字符串声明背后的历史。当然,这肯定与浏览器如何解释JavaScript有关,但我不知道会产生什么效果。

所以什么是"use strict";总之,这意味着什么,它是否仍然相关?

当前浏览器是否响应"use strict";字符串还是将来用的?


慕码人8056858
浏览 518回答 4
4回答

慕村225694

引用一些有趣的部分:严格模式是ECMAScript 5中的一个新特性,它允许您将程序或函数置于“严格”操作上下文中。这种严格的上下文阻止了某些操作的执行,并引发了更多的异常。以及:严格模式在以下几方面有所帮助:它捕捉到一些常见的代码bloopers,并抛出异常。当采取相对“不安全”的操作(例如访问全局对象)时,它会防止或抛出错误。它禁用了那些令人困惑或思想不清的特性。还请注意,您可以将“严格模式”应用于整个文件.也可以只用于特定的函数。(仍引用John Resig的文章):// Non-strict code...(function(){   "use strict";   // Define your library strictly...})();// Non-strict code...如果必须混合新旧代码,这可能会有所帮助;-)所以,我想这有点像"use strict"您可以在perl中使用(因此得名?)通过检测更多可能导致断裂的东西,它可以帮助你减少错误。严格模式现在所有主要浏览器都支持..如果您正在编写JavaScript本机ECMAScript模块(与import和export语句),则始终启用严格模式,并且不能禁用。

一只甜甜圈

这是ECMAScript 5的一个新特性它只是放入JavaScript文件(文件顶部或函数内部)中的一个字符串,如下所示:"use strict";现在将它放入您的代码中不会对当前浏览器造成任何问题,因为它只是一个字符串。如果您的代码违反了该实用程序,它可能会在将来引起您的代码问题。例如,如果您当前有foo = "bar"不定义foo首先,您的代码将开始失败.在我看来这是一件好事。

万千封印

声明"use strict";指示浏览器使用严格模式,这是一组简化的、更安全的JavaScript特性集。功能清单(并非详尽无遗)不允许全局变量。(渔获物失踪var声明和变量名称的键入)无声的失败分配将在严格模式下抛出错误(赋值)。NaN = 5;)删除不可删除属性的尝试将引发(delete Object.prototype)要求对象文本中的所有属性名称都是唯一的(var x = {x1: "1", x1: "2"})函数参数名称必须是唯一的(function sum (x, x) {...})禁止八进制语法(var x = 023;有些开发人员错误地认为前面的零不会改变数字。)禁止with关键词eval在严格模式下不引入新变量。禁止删除普通名称(delete x;)禁止绑定或指定名称eval和arguments以任何形式严格模式不别名arguments对象的形式参数。(即function sum (a,b) { return arguments[0] + b;}这是因为arguments[0]注定要a诸若此类。)arguments.callee不支持
打开App,查看更多内容
随时随地看视频慕课网APP