JS严格模式详解

简介: JS严格模式详解

1.什么是严格模式?

严格模式是在 ECMAScript5(ES5)中引入的,在严格模式下,JavaScript 对语法的要求会更加严格,一些在正常模式下能够运行的代码,在严格模式下将不能运行

2.启动严格模式

要启用严格模式,您只需要在 JavaScript 脚本的开头添加"use strict";或'use strict',示例代码如下:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      'use strict';
      x = 'http://baidu.com/'; // 此处报错:Uncaught ReferenceError: x is not defined at index.html:11
      console.log(x);
    </script>
  </body>
</html>

运行报如下错误

3.严格模式中的变化

(1).不允许使用未声明的变量

    <script>
      'use strict';
      v = 1;
      for (let i = 0; i < 2; i++) {}
    </script>

代码报错信息如下:

(2).不允许删除变量或函数

      'use strict';
      let obj = {
        name: 'zs',
        age: 19,
      };
      delete obj;
      function add(a, b) {
        return a + b;
      }
      delete add;

(3).函数中不允许有同名的参数

      'use strict';
      function add(a, a) {
        return a + a;
      }

(4).eval语句的作用域是独立的

            'use strict';
            eval('var x = 4;console.log(x)');
            console.log(x);

(5).不允许使用 with 语句

            'use strict';
            let radiusl = 5;
            let areal = Math.PI * radiusl * radiusl;
            let radius2 = 5;
            with (Math) {
                let areal = PI * radius2 * radius2;
            }

(6).不允许写入只读属性

      'use strict';
      var person = { name: 'zs', age: 18 };
      Object.defineProperty(person, 'gender', { value: 'female', writable: false });
      person.gender = 'male';

(7).不允许使用八进制数

            'use strict';
            let x = 010;
            console.log(parseInt(x));

(8).不要在if语句中声明函数

            'use strict';
            let x = 010;
            console.log(parseInt(x));

(9).禁止使用 this 表示全局对象

在普通模式下,this 关键字表示全局对象 window,而在严格模式下,this关键字则表示 undefined。

            'use strict';
            let name = 'http://baidu.com';
            function demoTest() {
                console.log(this);
            }
            demoTest();

3fda204c13df443c9741200786dede12.png

目录
相关文章
|
2月前
|
JSON JavaScript 前端开发
JavaScript第五天(函数,this,严格模式,高阶函数,闭包,递归,正则,ES6)高级
JavaScript第五天(函数,this,严格模式,高阶函数,闭包,递归,正则,ES6)高级
|
2月前
|
Web App开发 JavaScript 前端开发
JavaScript 严格模式(use strict)
JavaScript 严格模式(use strict)
39 0
|
4月前
|
JavaScript 前端开发 安全
20 JavaScript学习:变量提升和严格模式
20 JavaScript学习:变量提升和严格模式
|
5月前
|
JavaScript 前端开发 安全
JS 严格模式和正常模式的区别
JS 严格模式和正常模式的区别
|
6月前
|
JavaScript 前端开发 安全
javascript中的严格模式(use strict)
javascript中的严格模式(use strict)
48 1
|
JavaScript 前端开发
JavaScript的严格模式
ECMAScript 6 首次引入严格模式的概念。严格模式用于选择以更严格的条件检查 JavaScript 代码错 误,可以应用到全局,也可以应用到函数内部。严格模式的好处是可以提早发现错误,因此可以捕获某 些 ECMAScript 问题导致的编程错误。 理解严格模式的规则非常重要,因为未来的 ECMAScript 会逐步强制全局使用严格模式。严格模式 已得到所有主流浏览器支持。
57 0
|
6月前
|
JavaScript 前端开发 安全
|
6月前
|
JavaScript 前端开发 安全
JavaScript高级主题:JavaScript 中的严格模式是什么?有什么好处?
JavaScript高级主题:JavaScript 中的严格模式是什么?有什么好处?
77 0
|
6月前
|
JavaScript 前端开发 安全
JavaScript 严格模式
JavaScript 严格模式
|
前端开发 JavaScript
前端学习笔记202306学习笔记第三十七天-js代码中得严格模式3
前端学习笔记202306学习笔记第三十七天-js代码中得严格模式3
63 0