4 回答
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模块(与import
和export
语句),则始终启用严格模式,并且不能禁用。
TA贡献1836条经验 获得超5个赞
这是ECMAScript 5的一个新特性
它只是放入JavaScript文件(文件顶部或函数内部)中的一个字符串,如下所示:
"use strict";
现在将它放入您的代码中不会对当前浏览器造成任何问题,因为它只是一个字符串。如果您的代码违反了该实用程序,它可能会在将来引起您的代码问题。例如,如果您当前有foo = "bar"
不定义foo
首先,您的代码将开始失败.在我看来这是一件好事。
TA贡献1891条经验 获得超3个赞
声明"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
不支持
添加回答
举报