当前位置: 首页 > article >正文

【JS】严格模式/非严格模式的区别

JS的严格模式和非严格模式

js运行有两种模式:一种是普通模式;一种是严格模式。
严格模式是ES5添加的,是比普通模式多一部分的js规则。如果在ES5之前js解析引擎,会忽略严格模式。
js一般默认是普通模式,ES6的模块和Class类默认是严格模式。

严格模式的使用

脚本范围

在script标签顶部直接使用 **“use strict”**可触发严格模式
"use strict"上面不能有可执行代码,否则失效;但是上面可以是注释内容或者空行。

<script>
  console.log(1); 
  "use strict"; //上面有代码,自动失效
  a=6;
</script>
<script>

  /* 注释或者空行没有影响*/
  "use strict"; // 严格模式;不允许出现未声明的变量
  b=6; // Uncaught ReferenceError: b is not defined
</script>

在js文件的顶部使用 “use strict”,允许上面有注释和空行


// 注释和空行,整个文件都是严格模式,不会产生影响
"use strict";

函数范围

在函数内部的顶部使用 “use strict”,在函数内部是严格模式

function test() {
      // 函数的注释
      "use strict";
      t = 7;
    }
    // 声明时不报错;执行时报错
    test();  // Uncaught ReferenceError: t is not defined

arguments内置对象

  • 严格模式下,不论参数如何变化,arguments对象不会发生改变
  • 非严格模式下,参数的变化会同步到arguments对象中
    在这里插入图片描述

在上述示例中,在非严格模式下,参数a的变化会同步到arguments[0],始终保持一致

this指向

  • 严格模式下,禁止this指向window
        "use strict"
        var a = 50;
        let obj = {
            a: 10,
            func: function () {
                console.log(this);
                console.log(this.a);
            }
        }
        let fn = obj.func
        obj.func()//this->{a: 10, func: ƒ}
        fn();//严格模式:this->undefined this.a->报错  非严格模式:this->window this.a->50

参考链接:javascript严格模式


http://www.kler.cn/news/318774.html

相关文章:

  • Android 平台使用VIA创建语音交互应用开发指南
  • 更新C语言题目
  • 【linux】gcc makefile
  • 从0到1搭建权限管理系统系列三 .net8 JWT创建Token并使用
  • IDEA中Quarkus框架(3.13版本)开发、调试、部署、打包等
  • 通过 OBD Demo 体验 OceanBase 4.3 社区版
  • 关于Hadoop的详细步骤及方案案例
  • python爬虫初体验(三)——将网页数据导出csv和excel文件
  • eCharts扩展图表
  • PDF一键转播客!PDF2Audio让文档“开口说话“
  • 开始学习深度学习-前言
  • 【Docker】Docker快速入门
  • 玩手机数据集 8201张玩手机的照片,有对应的xml和txt文件,可以用于yolo训练
  • 【RabbitMQ】RabbitMQ 的概念以及使用RabbitMQ编写生产者消费者代码
  • 程序包管理器控制台中文乱码
  • 外包功能测试干了4年,技术退步太明显了。。。。。
  • VMWare虚拟机键盘卡顿
  • 主流高级编程语言的推出时间及年份
  • vue脚手架Vue CLI 2.9.6创建工程,并引入elementUI的方法
  • SpringBoot文档管理系统:架构与功能
  • Docker Compose 搭建 Redis 哨兵集群模式搭建详解(1主2从+3哨兵)(包含主从复制的搭建) (保证一遍学会)
  • 【Python大语言模型系列】一文教你使用dify云版本开发一个智能客服机器人(完整教程)
  • 线性判别分析(LDA)中计算两个类的中心点在投影方向w上的投影示例
  • 【质优价廉】GAP9 AI算力处理器赋能智能可听耳机,超低功耗畅享未来音频体验!
  • SpringBoot开发——实现webservice服务端和客户端
  • Paper 0 | Visual Instruction Tuning
  • Html--笔记01:使用软件vscode,简介Html5--基础骨架以及标题、段落、图片标签的使用
  • golang strings api接口
  • TraceId在线程池及@Async异步线程中如何传递
  • 低代码门户技术:构建高效应用的全新方式