JS严格模式

来源:互联网 发布:银行大数据 客户分层 编辑:程序博客网 时间:2024/05/16 15:39

JS 严格模式

1.什么是严格模式呢?
使得JS在一种严格模式下运行。'use strict'应该只能放在函数体或者文件的第一行

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

2.改变

  • 全局变量必须显式声明,因此,严格模式下,变量都必须先用var命令声明,然后再使用.
"use strict";v = 1; // Error.
  • 严格模式对动态绑定做了一些限制。某些情况下,只允许静态绑定。也就是说,属性和方法到底归属哪个对象,在编译阶段就确定。这样做有利于编译效率的提高,也使得代码更容易阅读,更少出现意外。

    (1)禁止使用with语句,因为with语句无法在编译时就确定,属性到底归属哪个对象

    (2)禁止this关键字指向全局对象

// 返回false,因为"this"指向全局对象,"!this"就是falsefunction f1(){    return !this;}console.log(f1());// 返回true,因为严格模式下,this的值为undefined,所以"!this"为true。function f2(){    "use strict";    return !this;}console.log(f2());
(3)禁止删除变量,严格模式下无法删除变量。只有configurable设置为true的对象属性,才能被删除。
 "use strict";  var x;  delete x; // 语法错误  var o = Object.create(null, {'x': {      value: 1,      configurable: true  }});  delete o.x; // 删除成功

参考

Javascript 严格模式详解

0 0
原创粉丝点击