JS 的严格模式
起因
JS的规定过于松散自由:
- 拼写错误不能得到识别,会自动创建全局变量
- 不会对赋值的权限进行检查,给只读内容赋值不会报错
严格模式的规定
简要总结:
未声明变量 不会自动创建全局变量,因而对其赋值会报错
对不可写变量赋值、删除不可删除属性 会报错(而不是在执行时跳过)
不允许出现重名属性、函数重名参数 (ES6以前 新的重名属性会覆盖旧的属性)
禁止八进制数字语法
禁止对字面量添加属性
禁用 with (with块内变量指向不明,需要运行时确定)
eval 中的变量不会再提升到外部
delete xx 会报错
通过this传递给一个函数的值不会被强制转换为一个对象
在一些地方禁止函数声明
为未来的 ECMAScript 提前保留关键字
使用
用一行语句进行标记:"use strict";
只能在脚本或函数的开头被识别
执行用户代码采用严格模式有利于保障安全性 (this会undefined)
严格模式改变了语义。依赖这些改变可能会导致没有实现严格模式的浏览器中出现问题或者错误。
内容会不断更新,欢迎批评指正。

浙公网安备 33010602011771号