【JavaScript】严格模式

严格模式(Strict Mode)是一种运行模式,它提供了一种更加严格的语法和错误检查,以帮助开发者编写更可靠、更规范的代码。

  1. 什么是严格模式:
    严格模式是一种 JavaScript 的执行模式,通过启用严格模式,可以对一些不规范或潜在的问题进行检测,并禁用一些不安全的语言特性,以提高代码质量和可维护性。

  2. 开启严格模式:
    在脚本文件或函数的开头添加"use strict";字符串,即可开启严格模式。例如:

    "use strict";
    // 严格模式下的代码
    
  3. 严格模式和普通模式的区别:

    • 变量必须声明:在严格模式下,变量必须使用varletconst进行声明,否则会抛出错误。而在普通模式下,未声明的变量会被隐式创建为全局变量。
    • 删除变量和不可写(不允许删除的 / 不存在的)属性:在严格模式下,无法删除不可写的变量(使用delete操作符),会抛出错误。而在普通模式下,删除不可写属性的操作会静默失败(不会给出任何提示)。
    • 禁止重复的函数参数名:在严格模式下,函数声明中禁止使用重复的参数名,否则会抛出错误。而在普通模式下,重复的参数名会被忽略。
    • 对象不能有重名属性(ES6 已不存在此问题)。
    • 禁止使用八进制字面量:在严格模式下,八进制字面量(以0开头的数字)将被视为语法错误。而在普通模式下,八进制字面量会被解析为对应的十进制数。
    • 函数内部this值为undefined:在严格模式下,函数内部的this值为undefined,而不是默认指向全局对象(如浏览器中的window)。
    • 创设 eval 作用域。严格模式下创设了 eval 作用域。正常模式下, eval 语句的作用域取决于它处再哪个作用域。严格模式下,eval 本身就是一个作用域,不能再生成全局作用域了,所生成的变量只能用于 eval 内部。
    "use strict";var x = 2
    // eval函数用于将给定的字符串作为JavaScript代码执行
    console.info(eval('var x = 5; x'))
    console.info(x)  // 严格模式下,eval中的变量不会影响外部变量,所以为2;否则为5
    
    • 保留字。严格模式新增的一些保留字:interface、let、package、private、static等,用于变量名将会报错。

使用严格模式的优点:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/12827.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

这个notebook集合,赞

这几天在Github上看到一个数据科学仓库,汇总了很多Python notebook代码,主要是数据方向。 项目地址: https://github.com/donnemartin/data-science-ipython-notebooks 其中包括了pandas、numpy、matplotlib、scikit-learn、tensorflow、sp…

【Xilinx】程序可以综合实现,但无法生成bit文件

项目场景: 使用xilinx vivado过程中遇到以下问题: 程序可以综合实现,但无法生成bit文件 问题描述 最终生成bit文件时报错如下 [DRC PDCN-1567] BUFGCTRL_CE_pins_both_connected_to_gnd: For cell ***/rxrecclk_bufg_i placed at site BU…

c++ visualstudio2017 opencv debug源码 windows配置

源码下载和cmake opencv源码和opencv-contribue文件夹的层级目录 在opencv-4.4.0中新建build文件夹,并启动cmake-gui 配置如下,使用vs2017 x64, 需要注意contrib文件夹的设置,如下方蓝色所示,依次点击Configure和Generate 在bu…

半小时搞懂STM32知识点——UART

1.UART 1.1为什么要使用UART这种协议?介绍一下UART及其特点 成本低,硬件简单,数据格式灵活; 低速全双工异步串行通信 1.2 UART数据帧格式? 起始位(1)+数据位(5-8) 校验位…

docker-java 操作docker

部署docker 10分钟学会Docker的安装和使用_docker安装-CSDN博客文章浏览阅读2.5w次,点赞44次,收藏279次。文章目录Docker简介Docker安装Windows安装Linux安装CentOS安装Ubuntu安装最近花了些时间学习docker技术相关,在此做一些总结&#xff0…

12350 安全生产举报投诉特服热线系统解决方案

一、建设背景与系统概述 (一)背景介绍 随着经济的持续发展和社会的不断进步,安全生产问题日益凸显,成为影响社会稳定和人民福祉的重要因素。在此背景下,加强安全生产监管,提高监管效率和质量显得尤为重要…

libasound+libsndfile读取麦克风音频保存为wav文件

依赖库 要完成该功能依赖libasound、libsndfile库,该命令在linux下可以通过命令行安装安装,安装命令如下: sudo apt-get install libasound2-dev sudo apt-get install libsndfile1-dev 代码实现 本文的目的是在linux下利用libasound和li…

wsl2迁移到非c盘

WSL2迁移 系统win11 核心步骤: 0) 以管理员身份运行powershell 查看已经安装的Ubuntu分发版本,我的是默认 wsl -lPS C:\Users\Windows10> wsl -l 适用于 Linux 的 Windows 子系统分发版: Ubuntu (默认) 1)导出到D盘 wsl --export Ubuntu d://ubuntu.tar PS C:\U…

你还在手动加好友?试试这款神器,释放双手自动添加!

你还在手动添加微信好友吗?尤其是在忙碌的时候,手动加好友不仅费时又很容易出错。试试这个自动添加好友神器——个微管理系统,释放你的双手,轻松拓展好友列表! 1、多号同时登录在线 系统支持多个微信号同时登录在线&…

数据结构——二叉树知识点详解!

引言:本篇博客将详细介绍到数据结构中的又一位大将——二叉树。它也是我们目前学到的第一个非线性的数据结构。并且本章将学到的概念居多,希望大家可以理解并牢记。 更多有关C语言和数据结构知识详解可前往个人主页:计信猫 目录 一&#xff0…

AIGC行业现在适合进入吗

AIGC行业目前正处于快速发展阶段,市场需求正处于爆发期,上大学网(www.sdaxue.com)认为,对于有兴趣的个人或企业而言,现在可能是一个适合进入的时机,以下是具体的分析,供大家参考! 一、AIGC行业前…

网络安全基础知识

目录 1、什么是防火墙?什么是堡垒主机?什么是DMZ? 2、网络安全的本质是什么? 3、计算机网络安全所面临的威胁分为哪几类?从人的角度,威胁网络安全的因素有哪些? 4、网络攻击和防御分别包括那…

zip file is empty

从下找到报错的jar包。展开这个jar包,看下是否正常,正常的是能够展开看到一些文件夹以及里面的类,如下:如果不正常,就删除这个jar包,同时找到这个jar包在本地maven仓库的地址,也删除掉&#xff…

string类实现

目录 string类实现 1.构造函数(三种) 2.c_str()函数 3.operator[] 重载 4.size()函数实现 5.迭代器 6.reserve()函数实现 7.push_back()函数实现 8.append()函数实现 9.operator实现 10.insert() 实现 11.erase()函数实现 12.find()函数实现…

Chrome 浏览器的常用命令包括

Chrome 浏览器的常用命令包括: 1. **新建标签页**:Ctrl T (在 Windows/Linux 下),Command T (在 macOS 下)。 2. **关闭当前标签页**:Ctrl W (在 Windows/Linux 下&…

Java面试八股之Collection和Collections的区别

Java中Collection和Collections的区别 Collection 是一个接口,位于 java.util 包中,它是 Java 集合框架的顶层接口之一,代表了一组对象的集合。Collection 接口定义了所有集合类型(如 List、Set、Queue 等)所共有的基…

LeetCode2352相等行列对

题目描述 给你一个下标从 0 开始、大小为 n x n 的整数矩阵 grid ,返回满足 Ri 行和 Cj 列相等的行列对 (Ri, Cj) 的数目。如果行和列以相同的顺序包含相同的元素(即相等的数组),则认为二者是相等的。 解析 针对题目给出的数量级…

cubemx配置stm32f407VET6实现can通信

背景: 项目上需要把原先的TMC5160电机驱动器替换为购买的电机控制模块(该模块采用canopen通信) 移植canopen的前提是can通信正常,现在添加一下can通信(先用标准帧,250K bit/S的波特率测试) 原理…

个人学习计划

vue前端(一周) 05/14 - 05/19 Html、css复习、vue基础复习、axios复习 05/14 ElementUI学习 05/15 JWT集成验证码、token 05/16 vue-route多角色登录 05/17 增删查改、文件下载 05/18 Echart饼状图 05/19 📌 附加学习: 父子传值三…

其它高阶数据结构②_图(概念+存储+遍历+最小生成树)

目录 1. 图的概念 2. 图的存储结构 2.1 邻接矩阵(后面算法所用) 2.2 邻接表 3. 图的遍历 3.1 BFS广度优先遍历 3.2 DFS深度优先遍历 4. 最小生成树 4.1 Kruskal算法 4.2 Prim算法 本篇完。 1. 图的概念 图是由顶点集合及顶点间的关系组成的一…