欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JS严格模式原理与用法实例分析

程序员文章站 2022-12-06 22:52:22
本文实例讲述了js严格模式原理与用法。分享给大家供大家参考,具体如下:使用 "use strict" 指令"use strict" 指令在 javascript 1.8.5 (ecmascript5)...

本文实例讲述了js严格模式原理与用法。分享给大家供大家参考,具体如下:

使用 "use strict" 指令

"use strict" 指令在 javascript 1.8.5 (ecmascript5) 中新增。

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

支持严格模式的浏览器:

internet explorer 10 +、 firefox  4+ chrome  13+、 safari 5.1+、 opera 12+。

严格模式声明

严格模式通过在脚本或函数的头部添加 "use strict"; 表达式来声明。

实例中我们可以在浏览器按下 f12 (或点击"工具>更多工具>开发者工具")  开启调试模式,查看报错信息。

为什么使用严格模式:

  • 消除javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
  • 消除代码运行的一些不安全之处,保证代码运行的安全;
  • 提高编译器效率,增加运行速度;
  • 为未来新版本的javascript做好铺垫。

严格模式的限制

1、不允许使用未声明的变量;

2、不允许删除变量或对象;

3、不允许删除函数;

4、不允许变量重名;

5、不允许使用八进制;

6、不允许使用转义字符;

7、不允许对只读属性赋值;

8、不允许对一个使用getter方法读取的属性进行赋值;

9、不允许删除一个不允许删除的属性;

10、变量名不能使用'eval'字符串;

11、变量名不能使用'arguments'字符串;

12、不允许使用以下这种语句:

<script>
"use strict";
with (math){x = cos(2)}; // 报错
</script>

13、由于一些安全原因,在作用域 eval() 创建的变量不能被调用:

<script>
"use strict";
eval ("var x = 2");
alert (x);        // 报错
</script>

14、禁止this关键字指向全局对象。

function f(){
 return !this;
} 
// 返回false,因为"this"指向全局对象,"!this"就是false
function f(){ 
 "use strict";
 return !this;
} 
// 返回true,因为严格模式下,this的值为undefined,所以"!this"为true。

感兴趣的朋友还可以使用本站在线html/css/javascript代码运行工具http://tools.jb51.net/code/htmljsrun测试上述代码运行结果。