js严格模式

本文章仅做学习之用,转载自阮一峰老师的个人博客。

1.在脚本文件的开头插入'use strict';

ex:

<script type="text/javascript">
        'use strict';
        console.log('这是严格模式')
    </script>
    <script type="text/javascript">
        console.log('这是正常模式')
    </script>

2.针对单个函数

 function strict(){
    "use strict";
    return "这是严格模式。";
  }

  function notStrict() {
    return "这是正常模式。";
  }

3.严格模式的一些特点

  3.1.变量必须声明

"use strict";

  v = 1; // 报错,v未声明

  for(i = 0; i < 2; i++) { // 报错,i未声明
  }

 

  3.2.静态绑定

  3.3.创建eval作用域

  3.4.禁止this对象指向全局对象

 function f(){
    return !this;
  }
  // 返回false,因为"this"指向全局对象,"!this"就是false

  function f(){
    "use strict";
    return !this;
  }
  // 返回true,因为严格模式下,this的值为undefined,所以"!this"为true。

  因此,使用构造函数时,如果忘了加new,this不再指向全局对象,而是报错。

function f(){

    "use strict";

    this.a = 1;

  };

  f();// 报错,this未定义

 

  3.5.禁止删除变量

  严格模式下无法删除变量。只有configurable设置为true的对象属性,才能被删除。

"use strict";

  var x;

  delete x; // 语法错误

  var o = Object.create(null, {'x': {
      value: 1,
      configurable: true
  }});

  delete o.x; // 删除成功

 

  3.6.对象不能有重名属性

"use strict";

  var o = {
    p: 1,
    p: 2
  }; // 语法错误

 

posted @ 2019-12-04 15:15  white55k  阅读(288)  评论(0编辑  收藏  举报