Tag: use-strict

syntax – What does “use strict” do in JavaScript, and what is the reasoning behind it?

The Question : 7706 people think this question is useful Recently, I ran some of my JavaScript code through Crockford’s JSLint, and it gave the following error: Problem at line 1 character 1: Missing “use strict” statement. Doing some searching, I realized that some people add "use strict"; into their JavaScript code. Once I added

JavaScript中使用“use strict”是什么,背后的原因是什么?

最近,我通过Crockford的JSLint运行了一些JavaScript代码,并给出了以下错误: 第1行的问题1:缺少“use strict”声明。 做一些搜索,我意识到有人添加"use strict";到他们的JavaScript代码。一旦我添加了语句,错误就不再出现。不幸的是,谷歌并没有透露这个字符串声明背后的大部分历史。当然,它必须与浏览器如何解释JavaScript有关,但我不知道会产生什么效果。 那么,究竟是"use strict";什么意思,这是什么意思,而且还是相关的? 目前的浏览器是否有响应这个"use strict";字符串,还是为了将来的使用? 这篇关于Javascript Strict Mode的文章可能会让你感兴趣:John Resig – ECMAScript 5严格模式,JSON等等 引用一些有趣的部分: 严格模式是ECMAScript 5中的一项新功能,允许您在“严格”操作环境中放置程序或函数。这种严格的上下文阻止了某些动作被采取并抛出了更多的异常。 和: 严格的模式可以帮助你: 它捕获了一些常见的编码bloopers,抛出异常。 当相对“不安全”的行为被采取时(例如获得对全局对象的访问),它防止或抛出错误。 它禁用混淆或糟糕的功能。 另外请注意,您可以将“严格模式”应用于整个文件…或者,您可以将其仅用于特定功能(仍引用John Resig的文章): 改变这么多年后的默认值?为时太晚:它会打破许多现有的网站/脚本/应用程序…唯一可能的事情是帮助事情变好,为未来。 我尝试了一个小的代码片段,"use strict"在Firefox 3.6,Safari 5,Chrome 7和Opera 10.6(全部Mac)中使用时将无效。没有任何错误,所以我想’使用严格’是不支持任何浏览器。虽然没有在IE9中测试) Chrome浏览器11似乎通过所有这些测试一样IE10 ie.microsoft.com/testdrive/HTML5/TryStrict/Default.html# –  GMAN 这触发了我的ocd …想切换语言规范?不要使用保留的关键字!只要把一根随机的字符串从任何地方乱转到无处,它就会诀窍。  这不能使用保留关键字来实现,因为那么尝试触发严格模式的代码会在旧浏览器中中断。添加一个“随机”字符串文字不会破坏任何东西。   这是ECMAScript 5的一个新功能。John Resig写了一个很好的总结。 这只是一个字符串,你放在你的JavaScript文件(无论是在你的文件的顶部或函数内),看起来像这样: 现在把它放在代码中不应该对当前浏览器造成任何问题,因为它只是一个字符串。如果您的代码违反杂注,可能会在将来导致代码出现问题。例如,如果你现在foo = "bar"没有定义foo第一个,你的代码就会失败…这在我看来是一件好事。 该语句"use strict";指示浏览器使用严格模式,这是一种简化且更安全的JavaScript功能集。 功能列表(非详尽) 不允许全局变量。(捕获var变量名称中缺少声明和拼写错误) 沉默失败的任务将在严格模式(分配NaN = 5;) 试图删除不可删除的属性将抛出(delete Object.prototype) 要求对象字面值中的所有属性名称都是唯一的(var