Js-w3school(2020.2.6)【js严格模式(Use Strict)】

二十四、js严格模式(Use Strict)

1."use strict"; 定义 JavaScript 代码应该以“严格模式”执行。是 JavaScript 1.8.5 中的新指令(ECMAScript version 5)。"use strict"; 的作用是指示 JavaScript 代码应该以“严格模式”执行。
2. 声明严格模式
通过在脚本或函数的开头添加 "use strict"; 来声明严格模式。
"use strict" 指令只能在脚本或函数的开头被识别。
3. 在严格模式中,向不可写的、只能读取的、不存在的属性赋值,或者向不存在的变量或对象赋值,将抛出错误
4. 严格模式中不允许的事项
(1)在不声明变量的情况下使用变量,是不允许的:

"use strict";
x = 3.14;                // 这将引发错误

(2)在不声明对象的情况下使用对象也是不允许的:

"use strict";
x = {p1:10, p2:20};      // 这将引发错误

(3)删除变量(或对象)是不允许的:

"use strict";
var x = 3.14;
delete x;                // 这将引发错误

(4)删除函数是不允许的:

"use strict";
function x(p1, p2) {}; 
delete x;                 // 这将引发错误

(5)重复参数名是不允许的:

"use strict";
function x(p1, p1) {};   // 这将引发错误

(6)八进制数值文本是不允许的:

"use strict";
var x = 010;             // 这将引发错误

(7)写入只读属性是不允许的:

"use strict";
var obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});
obj.x = 3.14;            // 这将引发错误

Object.defineProperty()的作用就是直接在一个对象上定义一个新属性,或者修改一个已经存在的属性。writable:false表示obj对象的x属性为只读
Object.defineProperty(obj, prop, desc)
·obj 需要定义属性的当前对象
·prop 当前需要定义的属性名
·desc 属性描述符:

数据属性(数据描述符): Configurable:能否通过 delete 删除属性,能否修改属性的特性,或者能否把属性修改为访问器属性。
Enumerable:能否通过 for ·· in 或者 Object.key() 枚举。 Writable:属性的值能否被修改。
Value:属性的值,可以是任何有效的 JavaScript 值(数值,对象,函数等) 访问器属性(存取描述符):
Get:在读取属性时调用的函数。 Set:在写入属性时调用的函数。

(8)写入只能获取的属性是不允许的:

"use strict";
var obj = {get x() {return 0} };
obj.x = 3.14;            // 这将引发错误

(9)删除不可删除的属性是不允许的:

"use strict";
delete Object.prototype; // 这将引发错误

(10)字符串 “eval” "arguments"等保留字不可用作变量:

"use strict";
var eval = 3.14;         // 这将引发错误

(11)with 语句是不允许的:

"use strict";
with (Math){x = cos(2)}; // 这将引发错误

(12)处于安全考虑,不允许 eval() 在其被调用的作用域中创建变量:

"use strict";
eval ("var x = 2");
alert (x);               // 这将引发错误

(13)在类似 f() 的函数调用中,this 的值是全局对象。在严格模式中,现在它成为了 undefined。
(14)严格模式中不允许使用为未来预留的关键词。它们是:

•	implements
•	interface
•	let
•	package
•	private
•	protected
•	public
•	static
•	yield
发布了41 篇原创文章 · 获赞 4 · 访问量 1639

猜你喜欢

转载自blog.csdn.net/mus123/article/details/104199918
今日推荐