js严格模式
来源:互联网 发布:淘宝女装修图教程 编辑:程序博客网 时间:2024/05/21 10:52
1.为什么用严格模式
- 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
- 消除代码运行的一些不安全之处,保证代码运行的安全;
- 提高编译器效率,增加运行速度;
- 为未来新版本的Javascript做好铺垫。
2.进入标志
"use strict";
3.如何调用
//针对单个脚本<script> "use strict"; console.log("这是严格模式。");</script>//针对单个函数function strict(){ "use strict"; return "这是严格模式。";}
4.严格模式对Javascript的语法和行为,都做了一些改变。
4.1 全局变量显式声明
在正常模式中,如果一个变量没有声明就赋值,默认是全局变量。严格模式禁止这种用法,全局变量必须显式声明。
"use strict"; v = 1; // 报错,v未声明 for(i = 0; i < 2; i++) { // 报错,i未声明 }
4.2 禁止this关键字指向全局对象
function f(){ return !this;} // 返回false,因为"this"指向全局对象,"!this"就是falsefunction f(){ "use strict"; return !this;} // 返回true,因为严格模式下,this的值为undefined,所以"!this"为true。
因此,使用构造函数时,如果忘了加new,this不再指向全局对象,而是报错。
function f(){ "use strict"; this.a = 1;};f();// 报错,this未定义
4.3禁止删除变量
严格模式下无法删除变量。只有configurable设置为true的对象属性,才能被删除。
"use strict"; var x; delete x; // 语法错误 var o = Object.create(null, {'x': { value: 1, configurable: true }});delete o.x; // 删除成功
4.4对象不能有重名的属性
正常模式下,如果对象有多个重名属性,最后赋值的那个属性会覆盖前面的值。严格模式下,这属于语法错误。
"use strict";var o = { p: 1, p: 2}; // 语法错误
4.5函数不能有重名的参数
正常模式下,如果函数有多个重名的参数,可以用arguments[i]读取。严格模式下,这属于语法错误。
"use strict";function f(a, a, b) { // 语法错误 return ;}
详见阮一峰的Javascript 严格模式详解
阅读全文
0 0
- DOCTYPE 严格模式与JS严格模式
- js strict 严格模式
- js严格模式
- js严格模式
- js之严格模式
- js严格模式详解
- JS严格模式
- js严格模式实例
- js严格模式
- js严格模式
- js-- 严格模式
- js严格模式总结
- JS严格模式
- js严格模式
- js严格模式
- js--严格模式 'use strict'
- js的严格模式总结
- js学习笔记:严格模式
- 第三方登录
- JSP编写定制标签
- HTML5开发者心声:浏览器兼容性成最大问题
- quartz各版本MySQL数据库存储建表SQL语句
- 异步请求上传图片
- js严格模式
- 6种负载均衡算法
- XYNUOJ 第四次比赛 懒省事得小名
- L2-005. 集合相似度
- 2017多校四 1003题 hdu 6069 Counting Divisors 分解质因数
- 排序--2
- Rabbitmq
- C语言系统编程
- web前端知识体系