最近有几位朋友一直在问,JS里面的严格模式与普通模式有什么区别😂~~
好吧 !!!
我列一下
- 严格模式需要在脚本或函数的第一行加上"use strict"或’use strict’来开启,普通模式不需要这样做。
- 严格模式禁止使用未声明的变量,否则会报错,普通模式下会自动创建全局变量。
- 严格模式禁止使用
with
语句,因为它会导致属性绑定的不确定性。 - 严格模式为
eval
语句创建了一个单独的作用域,它不能生成全局变量或影响外部作用域。 - 严格模式禁止
this
关键字指向全局对象,如果不是作为对象的方法调用,this
的值为undefined
。 - 严格模式禁止在函数内部遍历调用栈,即不能使用
arguments.callee
和arguments.caller
。 - 严格模式禁止删除变量或不可配置的属性,否则会报错。
- 严格模式禁止对只读属性或只有
getter
方法的属性进行赋值,否则会报错。 - 严格模式禁止使用八进制数字语法和转义字符。
- 严格模式要求对象内的所有属性名在对象内必须唯一,否则会报错。
- 严格模式要求函数的参数名必须唯一,否则会报错。
评论区