JS 的严格模式
起因
JS的规定过于松散自由:
- 拼写错误不能得到识别,会自动创建全局变量
- 不会对赋值的权限进行检查,给只读内容赋值不会报错
严格模式的规定
简要总结:
未声明变量 不会自动创建全局变量,因而对其赋值会报错
对不可写变量赋值、删除不可删除属性 会报错(而不是在执行时跳过)
不允许出现重名属性、函数重名参数 (ES6以前 新的重名属性会覆盖旧的属性)
禁止八进制数字语法
禁止对字面量添加属性
禁用 with (with块内变量指向不明,需要运行时确定)
eval 中的变量不会再提升到外部
delete xx 会报错
通过this传递给一个函数的值不会被强制转换为一个对象
在一些地方禁止函数声明
为未来的 ECMAScript 提前保留关键字
使用
用一行语句进行标记:"use strict";
只能在脚本或函数的开头被识别
执行用户代码采用严格模式有利于保障安全性 (this会undefined)
严格模式改变了语义。依赖这些改变可能会导致没有实现严格模式的浏览器中出现问题或者错误。
内容会不断更新,欢迎批评指正。
分类:
# JavaScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)