JS严格模式
ES5引入的一种新的JS运行模式,在严格模式下可以改变JS历史上遗留的一些不合理的语法或运行行为(这些语法或行为不能在普通模式下直接改变,因为会造成之前的老代码出问题),JS严格模式是为了在JS中引入新特性又不致于破坏老代码而产生的解决方案。
使用字符串字面量 ‘use strict’使脚本、<script>标签或函数进入严格模式
在严格模式下:
- 全局变量必须先声明才能使用(包括赋值)
- 禁止使用with
- eval执行在eval作用域中(这个作用域是新增的),这样eval就不会影响全局作用域或函数作用域了
- this不会也不能指向全局作用域(window对象),这样构造函数不加new调用就会报错,从而不至于影响全局作用域
- 禁止访问arguments.caller(表示调用当前函数的函数)、arguments.callee(表示当前函数自已,如用于匿名函数递归调用),也不能通过函数名访问arguments,但对arguments的使它使用(如获取参数)是正常的!
- arguments不可被赋值,也不再追踪参数值的变化(arguments中的值不会变)
- 禁止使用delete删除变量
- 显式报错,而不是沉默忽略错误(如对只读属性赋值、对禁止扩展的对象添加属性、删除不能删除的属性、属性名重复、参数名重复)
- 不支持八进制,整数第1位是0将报错
- 函数不能在if{}、for{}等{}内部声明(以后版本会引入块级作用域)
- 新增mplements, interface, let, package, private, protected, public, static, yield关键字,不能使用这些名称作为变量名,函数名、参数名等
具体可参考http://dwz.cn/A6tGP
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构