三木社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 410|回复: 0
打印 上一主题 下一主题

JavaScript 严格模式的限制

[复制链接]

942

主题

950

帖子

3062

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3062
跳转到指定楼层
楼主
发表于 2017-9-8 11:22:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
严格模式的限制
不允许使用未声明的变量:
  1. "use strict";
  2. x = 3.14;                // 报错 (x 未定义)
复制代码
对象也是一个变量。
  1. "use strict";
  2. x = {p1:10, p2:20};      // 报错 (x 未定义)
复制代码
不允许删除变量或对象。
  1. "use strict";
  2. var x = 3.14;
  3. delete x;                // 报错
复制代码
不允许删除函数。
  1. "use strict";
  2. function x(p1, p2) {};
  3. delete x;                // 报错
复制代码
不允许变量重名:
  1. "use strict";
  2. function x(p1, p1) {};   // 报错
复制代码
不允许使用八进制:
  1. "use strict";
  2. var x = 010;             // 报错
复制代码
不允许使用转义字符:
  1. "use strict";
  2. var x = \010;            // 报错
复制代码
不允许对只读属性赋值:
  1. "use strict";
  2. var obj = {};
  3. Object.defineProperty(obj, "x", {value:0, writable:false});

  4. obj.x = 3.14;            // 报错
复制代码
不允许对一个使用getter方法读取的属性进行赋值
  1. "use strict";
  2. var obj = {get x() {return 0} };

  3. obj.x = 3.14;            // 报错
复制代码
不允许删除一个不允许删除的属性:
  1. "use strict";
  2. delete Object.prototype; // 报错
复制代码
变量名不能使用 "eval" 字符串:
  1. "use strict";
  2. var eval = 3.14;         // 报错
复制代码
变量名不能使用 "arguments" 字符串:
  1. "use strict";
  2. var arguments = 3.14;    // 报错
复制代码
不允许使用以下这种语句:
  1. "use strict";
  2. with (Math){x = cos(2)}; // 报错
复制代码
由于一些安全原因,在作用域 eval() 创建的变量不能被调用:
  1. "use strict";
  2. eval ("var x = 2");
  3. alert (x);               // 报错
复制代码
禁止this关键字指向全局对象。
  1. function f(){
  2.         return !this;
  3. }
  4. // 返回false,因为"this"指向全局对象,"!this"就是false

  5. function f(){
  6.         "use strict";
  7.         return !this;
  8. }
  9. // 返回true,因为严格模式下,this的值为undefined,所以"!this"为true。
复制代码
因此,使用构造函数时,如果忘了加new,this不再指向全局对象,而是报错。
  1. function f(){
  2.         "use strict";
  3.         this.a = 1;
  4. };
  5. f();// 报错,this未定义
复制代码


回复

使用道具 举报

Archiver|手机版|小黑屋|三木电子社区 ( 辽ICP备11000133号-4 )

辽公网安备 21021702000620号

GMT+8, 2026-1-19 23:56 , Processed in 0.028219 second(s), 23 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表