JavaScript之严格模式 "use strict";
来源:互联网 发布:苹果手机游戏推荐 知乎 编辑:程序博客网 时间:2024/06/04 18:49
严格模式就是在代码片段的顶部加上一个字符串常量的语句"use strict";(也可以用单引号),它可以是全局的,也可以是局部的(function和eval两种局部作用域)。但是它必须是代码的第一个语句(未必要是第一行)。在它之前如果有任何语句(包括空语句),严格模式的声明就会失效。
"use strict";//全局严格模式
function func(){ "use strict";//局部严格模式};eval('"use strict";/*局部严格模式*/');
;"use strict";//失效的严格模式声明
知道了严格模式的声明,那么它到底要怎么用呢?下面我们一个个功能说明。
1. 变量必须声明才能使用"use strict";a=1;//缺少var语句做声明,因此报错
"use strict";var a=b=1;//错误 b未声明
2. 函数声明语句(不包括表达式)不允许在普通代码块(不包括闭包)中使用"use strict";(function(){//闭包中是允许使用函数声明语句的function func(){};})();{var f=function(){};//函数声明表达式允许function func(){};//函数声明语句在普通闭包中,错误};
3. 闭包内的this不指向Global对象"use strict";(function(){ alert(this);//输出undefined})();
4. 对象属性和函数形参不能重复声明"use strict";var o={a:1,a:1};//这个对象定义了两个a属性,因此报错
"use strict";function func(a,a){};//这个函数的两个形参都是a,因此报错
5. eval拥有类似闭包的作用域"use strict";var a=1,b=1;eval("var a=2");window.eval("var b=2");alert(a);//输出1 因为运行的a变成了eval作用域的局部变量alert(b);//输出2 window.eval依然是全局作用域
6. callee和caller属性无法使用"use strict";function func(){return arguments.callee; //错误 callee无法使用};func();
7. with语句无法使用"use strict";with({});
8. 八进制数字常量无法使用"use strict";var a=0999;//十进制,可以使用var b=0123;//八禁止,无法使用
9. 普通模式下的一些无效操作变成错误"use strict";var a=1;delete a;//错误 无法删除var声明的变量
"use strict";var o={get a(){}};o.a=1;//错误 给只读属性赋值
暂时就总结出这些啦,还有一些细节的条款我也描述的不是那么准确,建议看看MDN上的描述。参考:
MDN Strict_mode
- JavaScript之严格模式 "use strict";
- 'use strict' JavaScript严格模式
- javascript 严格模式 use strict
- JavaScript: 严格模式(use strict)
- JavaScript 严格模式(use strict)
- JavaScript 严格模式 use strict
- Javascript 严格模式use strict
- JavaScript 严格模式(use strict)
- JavaScript语法支持严格模式:”use strict”
- JavaScript语法支持严格模式:”use strict
- Javascript 严格模式详解 use strict
- 'use strict' - Javascript 的严格模式
- "use strict"; ----Javascript 严格模式详解
- Javascript 严格模式详解 "use strict"
- Javascript 严格模式use strict详解
- Javascript 严格模式(use strict)详解
- Javascript 严格模式use strict详解
- javascript 严格模式深入理解 use strict
- stm32 io模拟spi通信
- Dictionary
- Spring SpringMVC文件上传错误(二)
- C++ 动态链接库和静态链接库
- Android ListView单选CheckBox
- JavaScript之严格模式 "use strict";
- 屌丝们如何突破屌丝固有的穷人思维!
- ORACLE触发器详解
- leetcode.307. Range Sum Query - Mutable 树状数组
- 用dir命令显示文件的完整路径及分屏显示
- 网易视频云技术分享:HBase - 建表语句解析
- Let Me Count The Ways
- Java序列化与反序列化
- 百度地图api手机浏览器定位