IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> js中的严格模式 -> 正文阅读

[JavaScript知识库]js中的严格模式

在JS中 除了提供正常模式外,还提供了严格模式(strict mode)既在严格的条件下运行 JS 代码。
严格模式在 IE10 以上版本的浏览器中才会被支持,旧版本浏览器中会被忽略。
严格模式对正常的 JavaScript 语义做了一些更改比如:

  1. 消除了 Javascript 语法的一些不合理、不严谨之处,减少了一些怪异行为。

  2. 消除代码运行的一些不安全之处,保证代码运行的安全。

  3. 提高编译器效率,增加运行速度。

  4. 禁用了在 ECMAScript 的未来版本中可能会定义的一些语法,为未来新版本的 Javascript 做好铺垫。比如一些保留字如:class, enum, export, extends, import, super 不能做变量名

二、进入标志: "use strict"; (或 'use strict';)
注意:老版本的浏览器会把它当作一行普通字符串,加以忽略。

调用方式:

  • 在整个脚本文件开启严格模式
script>
      "use strict";
       console.log("这是严格模式。");
</script>
  • 在函数中开启严格模式

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

3.在直接执行函数中开启严格模式:

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

严格模式下语法的改变以及禁用的保留字

  1. 全局变量中我们的变量名必须先声明再使用 :
 <script>
      'use strict';
      
//    num = 10;              //    undefined
//    console.log(num);
      var num = 10;
      console.log(num); 
  </script>
  1. 我们不能随意删除已经声明好的变量
 // delete num;                   //报错不能删除
  1. 严格模式下全局作用域中函数中的 this 是 undefined。
  function fn() {

      console.log(this); // undefined。

  }
  fn();
  1. 禁止this关键字指向全局对象

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

  function f(){
    "use strict";
    return !this;    //返回ture
  }

因为严格模式下,this的值为undefined,所以"!this"为true。
因此,使用构造函数时,如果忘了加new,this不再指向全局对象,而是报错。

  1. 定时器 this 还是指向 window
  setTimeout(function() {
      console.log(this);    //window

  }, 2000);
 
  1. 严格模式下函数里面的参数不允许有重名

  function fn(a, a) {
      console.log(a + a);    //Duplicate parameter name not allowed in this context

 };
  fn(1, 2);
 function fn() {}

总结

  • 严格模式下全局作用域中函数中的 this 是 undefined。

  • 严格模式下,如果 构造函数不加new调用, this 指向的是undefined 如果给他赋值则 会报错

  • new 实例化的构造函数指向创建的对象实例。

  • 定时器 this 还是指向 window 。

  • 事件、对象还是指向调用者。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-09 10:09:16  更:2021-08-09 10:10:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 14:38:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码