use strict 概念理解篇

前端必知必会-JavaScript Use Strict严格模式 本文介绍了JavaScript Use Strict严格模式的使用,如有问题欢迎私信和评论。 阅读详情

“use strict” 概念

“use stric” 是ES5引入的一个指令。指令不是语句(但非常相似)。"use strict"与常规语句有两个重要的区别。

  • 不包含任何语言关键字:指令是由特殊字符串字面量构成的表达式语句。
  • 只能出现在脚本或函数体的开头,位于所有其他真正的语句之前。

严格模式的几种情况:

“use strict” 指令的目的是表示它后面的代码是严格代码。
如果脚本中有"use strict"代码,则脚本的顶级代码是严格代码。
如果函数体在严格代码中定义的,或者函数体中有一个"use strict"指令,那么它就是严格代码。
如果严格模代码中调用了eval(),那么eval()的代码也是严格代码。
如果传给eval()重点字符串包括"use strict",那么对应的代码是严格代码。
出了显式声明为严格的代码,任何位于class体或ES6模块的代码都默认为严格代码。而无需吧"use strict"指令显式的写出来。

严格模式在严格模式下执行。严格模式是JavaScript的一个受限制的子集,这个子集修复了重要的语言缺陷,提供了更强的错误
检查,也增强了安全性。因为严格模式并不是默认的,那些使用语言中有缺陷的遗留特性的旧代码依然可正确运行。

严格模式与费严格模式的区别如下:

  • **严格模式不允许使用with语句
  • 在严格模式下,所有变量必须声明。如果把值赋给一个标识符,而这个标识符是没有声明的变量、函数、函数参数、catch子句参数或全局对象的属性,都会导致抛出一个ReferenceError
  • 在严格模式下,函数如果作为函数而调用,其this为undefined(非严格模式下,this为全局对象)。另外在严格模式下,如果函数通过call()或者apply()的值,则this的值就是作为第一个参数传给call或apply的值(非严格模式下,null,undefined值会被替换为全局对象,而非对象值会被替换为对象)
  • 在严格模式下,给不可编写的属性赋值或尝试在不可扩展的对象上创建新属性会抛出typeError(非严格模式静默失败)
  • 在严格模式下,传给eval的代码不能像非严格模式下那样在调用者的作用域中声明变量或定义函数。这种情况下定义的变量和函数就会存在一个为eval创建的新作用域中,并在eval返回时销毁
  • 在严格模式下,函数中的arguments对象保存着一份传给函数的值的静态副本,在非严格模式下,arguments对象具有魔法行为,即这个数组中的元素与函数的命名参数引用相同的值。
  • 在严格模式下,delete操作符后面跟一个为限定的标识符,比如变量、函数、函数参数,会抛出错误syntaxError,非严格默认fasle
  • 在严格模式下,删除一个不可配置的属性抛出错误TypeError,非严格模式下会失败 ,返回false
  • 在严格模式下,对象字面量定义两个活多个同名的属性是语法错误,非严格不会发生错误
  • 在严格模式下,不允许使用八进制整数字面量,非严格允许
  • 在严格模式下,标识符eval和arguments被当做关键字,不允许修改他们的值。不能给这些标识符赋值,不能把它们声明为变量,不能把它们作为函数名或者函数参数名,也不能作为catch块的标识符使用
  • 在严格模式下,检查调用栈的能力是受限的。arguments.caller和arguments.callee在严格模式下函数会抛出typeError。严格模式函数也有caller和arguments属性,单读取它们会抛出错误typeError
严格模式 (use strict) 的用途?有什么好处? use strict是一个 JavaScript 语法,它告诉执行环境执行代码时应该遵循严格模式。 而在严格模式之下,JavaScript 会以更严格的方式执行语法,并且对于一些不符合规范的代码会回报错误。 阅读详情

相关推荐

EtherCAT主站视角:如何正确配置一个支持动态PDO的从站(以倍福TwinCAT为例)

本文详细解析了在TwinCAT环境下配置支持动态PDO的EtherCAT从站的全过程。通过MDP(Modular Device Profile)实现模块化配置,涵盖从站工作原理、TwinCAT工程配置、调试技巧到高级应用实践,帮助工程师快速掌握动态PDO配置技术,提升工业现场设备扩展与维护效率。

weixin_30466039的博客 267

“use strict“是什么? 使用它有什么优缺点?

消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;② 严格模式修复了一些导致 JavaScript引擎难以执行优化的缺陷;"use strict" :指定代码在严格条件下执行;- 消除代码运行的一些不安全之处,保证代码运行的安全;- 为未来新版本的Javascript做好铺垫。有时候,相同的代码,严格模式可以比非严格模式下。- 提高编译器效率,增加运行速度;① 禁止this关键字指向全局对象。② 禁止在函数内部遍历调用栈。⑤ 不能使用未声明的变量。③ 全局变量必须显式声明。

小草莓的博客 1710

java 对接工行聚富通H5聚合支付接口

java 对接工行聚富通H5聚合支付接口

lgl的博客 858

use strict 是什么意思?使用它区别是什么?

use strict 代表开启严格模式,这种模式下使得 JavaScript 在更严格的条件下运行,实行更严格解析和错误处理。

weixin_62548988的博客 899

五子棋AI实战:极大极小搜索、Alpha-Beta剪枝与禁手实现

博弈树搜索是双人零和博弈AI的经典决策框架,其核心思想是假设对手最优应对,通过递归遍历走法空间寻找最优解。极大极小搜索配合Alpha-Beta剪枝,能在不影响决策结果的前提下将搜索量降至平方根级别,大幅提升搜索效率。在五子棋场景中,还需处理黑棋禁手规则,包括双三、双四和长连判定,并将其融入搜索框架。评估函数基于棋型识别对局面打分,走法排序和迭代加深进一步优化剪枝效果。这些技术共同构成了一个可运行的五子棋AI,适用于棋类AI入门与博弈搜索实践。

weixin_29054399的博客 129

Windows系统的Mamba环境配置详细教程(状态空间模型)

causal_conv1d也是安装mamba的依赖必须库。安装完成后,通过pip list可以查看到安装的库。Triton是安装mamba的依赖,需要先安装。上述工作准备好后,按下面步骤安装。直接根据离线文件安装即可。是自己的虚拟环境名字。

2301_77831163的博客 3676

“use strict“:是JavaScript的救星还是束缚?

在接下来的部分,我们将深入探讨严格模式的各种优点,以帮助你更好地理解它为何被认为是JavaScript的救星。因此,在项目中要确保一致地使用严格模式。由于对代码执行的更严格要求,严格模式可以帮助JavaScript引擎更有效地进行优化,提高代码的性能。由于对代码的更严格要求,严格模式可以帮助JavaScript引擎更有效地进行优化,提高代码的性能。总的来说,我认为利大于弊,我从来不使用严格模式禁用的功能,因此我推荐使用严格模式。严格模式引入了一些新的保留字,强制开发者遵守更严格的规则,以确保代码的一致性。

Web面试那些事儿的博客 1457

python特征选择pso_【来点干货】机器学习中常用的特征选择方法及非常详细的Python实例...

花费了很长时间整理编辑,转载请联系作者授权,违者必究。特征选择(Feature selection)是在构建预测模型的过程中减少输入变量的一个过程。它是机器学习中非常重要的一步并在很大程度上可以提高模型预测精度。这里我总结了一些机器学习中常见的比较有用的特征选择方法并附上相关python实现code。希望可以给大家一些启发。首先,我们为什么要进行特征选择呢?它有以下几个优点:减少过拟合:冗余数据常...

weixin_39927158的博客 1161

JavaScript严格模式“use strict“

javascript 代码中的"use strict";是什么意思

路人贾! 1201

把 ABAP SQL 窗口函数讲透:从 OVER 到 LEAD、RANK 与累计分析

ABAP SQL窗口函数在不丢失明细记录的前提下,为每行数据提供组内统计和排名功能。它通过OVER子句定义计算窗口,支持三类函数:聚合型(AVG/SUM等)、排名型(ROW_NUMBER/RANK等)和取值型(LEAD/LAG)。相比GROUP BY会合并多行数据,窗口函数保留原始记录同时附加计算结果,特别适合需要保留明细又要展示统计信息的业务场景,如销售排名、客户分层分析等。语法核心是OVER子句,通过PARTITION BY分组,ORDER BY排序,可灵活定义计算范围。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1273

YOLOv8与UNetV2融合:一种面向目标检测与图像分割的混合方法【附核心代码】

我们提出了一种基于YOLOv8和UNetV2相结合的混合架构。该架构利用YOLOv8作为主干进行目标检测,同时在YOLOv8的特征提取过程中,引入UNetV2来进行图像分割任务的增强。在该架构中,YOLOv8负责大范围目标检测和位置预测,而UNetV2则在检测网络的特征图基础上,通过其高效的上下文信息提取和细节恢复能力,进一步优化分割任务。在本文中,我们提出了一种改进YOLOv8的方法,通过引入图像分割网络UNetV2来提高图像分割检测性能。

一键难忘的博客 3524

关于js中‘use strict‘使用的一些看法

掌握use strict的内容,有助于更细致深入地理解Javascript,让你变成一个更好的程序员。

weixin_58679768的博客 271

Cadence PCB仿真 使用Allegro PCB SI为BRD文件创建通用型IBIS模型的方法图文教程

本文简单介绍使用Allegro PCB SI软件为BRD PCB设计文件中的元器件创建IBIS模型的方法。

fydar的博客 2168

解密:JavaScript 模式(use strict)

1. 概述ECMAScript 5的严格模式是JavaScript中的一种限制性更强的变种方式。严格模式不是一个子集:它在语义上与正常代码有着明显的差异。不支持严格模式的浏览器与支持严格模式的浏览器行为上也不一样, 所以不要在未经严格模式特性测试情况下使用严格模式。严格模式可以与非严格模式共存,所以脚本可以逐渐的选择性加入严格模式。 严格模式在语义上与正常的JavaScript有一些不同。 首先,

mengjunquan的专栏 8173

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

简单理解"use strict"

"use strict"的简单理解和运用,还需要再详细研究一下

Mankii的博客 567

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

JavaScript 严格模式(use strict)

使用 "use strict" 指令 "use strict" 指令在 JavaScript 1.8.5 (ECMAScript5) 中新增。 它不是一条语句,但是是一个字面量表达式,在 JavaScript 旧版本中会被忽略。 "use strict" 的目的是指定代码在严格条件下执行。 严格模式下你不能使用未声明的变量。 支持严格模式的浏览器: Internet Explorer 1...

u011280778的博客 337

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

JavaScript 22. 严格模式(use strict)

另一方面,同样的代码,在"严格模式"中,可能会有不一样的运行结果;一些在"正常模式"下可以运行的语句,在"严格模式"下将不能运行。掌握这些内容,有助于更细致深入地理解Javascript,让你变成一个更好的程序员。"严格模式"体现了Javascript更合理、更安全、更严谨的发展方向,包括IE 10在内的主流浏览器,都已经支持它,许多大项目已经开始全面拥抱它。因此,使用构造函数时,如果忘了加new,this不再指向全局对象,而是报错。“use strict” 的目的是指定代码在严格条件下执行。

爱死亡机器人 348

JavaScript Use Strict

“use strict”; 定义 JavaScript 代码应该以“严格模式”执行。 “use strict” 指令 “use strict” 是 JavaScript 1.8.5 中的新指令(ECMAScript version 5)。 它不算一条语句,而是一段文字表达式,更早版本的 JavaScript 会忽略它。 “use strict”; 的作用是指示 JavaScript 代码应该以“严格模式”执行。 在严格模式中,您无法,例如,使用未声明的变量。 以下版本的浏览器支持严格模式: 版本 10 以后

qq_42848534的博客 434

关于严格模式“use strict”的理解

1.介绍 除了正常运行模式,ES 5中添加了第二种运行模式:”严格模式”(strict mode)。顾名思义,这种模式使得Javascript在更严格的条件下运行。以“use strict”为标志。 2.为什么用严格模式 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为; 消除代码运行的一些不安全之处,保证代码运行的安全; 提高编译器效率,增加运行速度; 为未来新版本...

xiazeqiang2018的博客 2995

Js-w3school(2020.2.6)【js严格模式(Use Strict)】

二十四、js严格模式(Use Strict) 1."use strict"; 定义 JavaScript 代码应该以“严格模式”执行。是 JavaScript 1.8.5 中的新指令(ECMAScript version 5)。"use strict"; 的作用是指示 JavaScript 代码应该以“严格模式”执行。 2. 声明严格模式 通过在脚本或函数的开头添加 "use strict"; 来...

mus-z的博客 197

Javascript 什么是use strict?使用它的好处和坏处分别是什么?

use strict” 是一种在 JavaScript 中启用严格模式的方式。防止意外的全局变量:在严格模式下,如果你不显式声明一个变量(例如,不使用 var、let 或 const),JavaScript 会抛出一个错误,而不是默认创建一个全局变量。需要手动启用:你需要在每个 JavaScript 文件或函数的顶部添加 “use strict”,以启用严格模式。使得 eval() 更安全:在严格模式下,eval() 的行为有所改变,任何在 eval() 内部声明的变量或函数都不会在外部作用域中创建。

csdn_Levy的博客 369

"use strict";

一、概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:”严格模式”(strict mode)。顾名思义,这种模式使得Javascript在更严格的条件下运行。设立”严格模式”的目的,主要有以下几个:   - 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;   - 消除代码运行的一些不安全之处,保证代码运行的安全;   - 提高编译器效率,增加运行

喵咪不爱吃鱼的博客 583

前端面试——JavaScript 严格模式(use strict)

使用 "use strict" 指令 "use strict" 指令在 JavaScript 1.8.5 (ECMAScript5) 中新增。 它不是一条语句,但是是一个字面量表达式,在 JavaScript 旧版本中会被忽略。 "use strict" 的目的是指定代码在严格条件下执行。 严格模式下你不能使用未声明的变量。   为什么使用严格模式: 消除Javascript语法的一...

哈哈hyc的博客 861

严格模式use strict

1. 严格模式(strict mode),只有在代码首部加入字符串 "use strict"。必须在全局首部或函数首部即首部指其前面没有任何有效js代码除注释,否则无效。 2.Object.preventExtensions(obj),ES5新语法,IE9+,使对象obj不可拓展,即添加新的属性或方法不成功,但是不会报错 严格模式下,添加新的属性或方法会报错。 3.caller和cal...

zyz00000000的博客 495
上一篇: git:一个本地仓库绑定多个远程的方法以及遇到的问题
下一篇: vue项目中使用@microsoft/fetch-event-source库实现流式接口对接
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值