主页 > 其他  > 

JavaScript严格模式

JavaScript严格模式

JavaScript 的严格模式是一种限制 JavaScript 的一部分用法,以提高代码质量和安全性的模式。在严格模式下,不允许使用一些以前的不安全的语法,同时还引入了一些新的限制和改进。

要在 JavaScript 文件或函数中启用严格模式,可以使用 "use strict" 指令。

"use strict";

"use strict" 指令在 JavaScript 1.8.5 (ECMAScript5) 中新增。

它不是一条语句,但是是一个字面量表达式,在 JavaScript 旧版本中会被忽略。

"use strict" 的目的是指定代码在严格条件下执行。

严格模式下你不能使用未声明的变量。

支持严格模式的浏览器:

Internet Explorer 10 +、Firefox 4+、 Chrome 13+、 Safari 5.1+、 Opera 12+。

严格模式对 JavaScript 引擎做了大量的改变。以下是一些主要的变化:

消除静默错误:严格模式下,JavaScript 会抛出更多的错误,而不是静默地忽略它们。例如,赋值给一个未声明的变量会抛出一个错误。

阻止一些不安全的操作:严格模式会阻止一些不安全的操作,比如删除不可删除的属性。

改变函数的行为:在严格模式下,函数的行为会发生一些变化。例如,通过 eval() 添加的变量不会出现在函数定义的作用域中。

改变 this 的行为:在严格模式下,函数内部的 this 在没有明确指定的情况下不会默认指向全局对象,而是 undefined。

不允许重复的参数名:在严格模式下,函数参数不能有重复的名字,否则会抛出一个错误。

更多的保留字:严格模式下,一些以前的保留字(如 eval 和 arguments)在某些情况下会有更多的限制,不允许作为变量或函数名。

严格模式的限制以及相应的示例: 禁止使用未声明的变量 "use strict"; x = 10; // ReferenceError: x is not defined 禁止删除变量或函数 "use strict"; var x = 10; delete x; // SyntaxError: Delete of an unqualified identifier in strict mode. 禁止重复命名参数 "use strict"; function myFunction(a, a) { // SyntaxError: Duplicate parameter name not allowed in this context return a + a; } ​​​​​禁止使用八进制表示法 "use strict"; var num = 010; // SyntaxError: Octal literals are not allowed in strict mode. ​​​​禁止使用 with 语句 "use strict"; var obj = { x: 10, y: 20 }; with (obj) { // SyntaxError: Strict mode code may not include a with statement console.log(x + y); } 严格模式中 this 的限制 "use strict"; function myFunction() { console.log(this); } myFunction(); // undefined 不允许使用转义字符: "use strict"; var x = \010; // 报错 不允许对只读属性赋值: "use strict"; var obj = {}; Object.defineProperty(obj, "x", {value:0, writable:false}); obj.x = 3.14; // 报错 不允许对一个使用getter方法读取的属性进行赋值 "use strict"; var obj = {get x() {return 0} }; obj.x = 3.14; // 报错 不允许删除一个不允许删除的属性: "use strict"; delete Object.prototype; // 报错

保留关键字

为了向将来Javascript的新版本过渡,严格模式新增了一些保留关键字:

implementsinterfaceletpackageprivateprotectedpublicstaticyield

 

标签:

JavaScript严格模式由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“JavaScript严格模式