严格模式
严格模式
什么是严格模式
JavaScript 除了提供正常模式外,还提供了严格模式(strict mode) ES5 的严格模式是采用具有限制性的 JavaScript 变体的一种方式,即在严格的条件下运行 JS 代码 (IE10以上版本)
严格模式对正常的 JavaScript 语义做了一些修改:
- 消除了 JavaScript 语法的一些不合理,不严谨之处,减少了一些怪异行为
- 消除代码运行的不安全之处,保证代码运行的安全
- 提高编译器效率,增加了运行速度
- 禁用了在 ECMAScript 的未来版本中可能会定义的一些语法,为未来版本的 JavaScript 做好铺垫,比如一些保留字:class,rnum,export,extends,import,super 不能做变量名
开启严格模式
严格模式可以应用到整个脚本或个别函数中,因此在使用时,我们可以将严格模式分为为脚本开启严格模式和为函数开启严格模式两种情况
为脚本开启严格模式
为整个脚本文件开启严格模式,需要在所有语句之间放一个特定语句"use strict";(或 'use strict'😉
严格模式中的变化
严格模式 JavaScript 的语法和行为,都做了一些改变
变量规定
- 正常模式中,一个变量未声明就赋值,默认为全局变量;严格模式中,变量必须先用 var等 命令声明,然后使用
- 严禁删除已经声明后的变量
严格模式下的 this 指向问题
- 以前在全局作用域中 this 指向 window 对象,严格模式下全局作用域中 this 指向 undefined
- 以前构造函数不加 new 也可以调用,当普通函数,this 指向全局对象,严格模式,构造函数不加 new 调用,this 指向的undefind 如果给它赋值 会报错
函数变化
- 函数不能有重名的参数
- 函数必须声明在顶层 新版本的 JavaScript 会引入"块级作用域"(ES6 中以引入),为了与新版本接轨,不允许在非函数的代码块内声明函数
本文来自博客园,作者:懒惰ing,转载请注明原文链接:https://www.cnblogs.com/landuo629/p/12554244.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?