JS的严格模式
1、不允许用with。
2、所有变量必须声明,赋值给为声明的变量报错,而不是隐式创建全局变量。
3、eval中的代码不能创建eval所在作用域下的变量、函数。而是为eval单独创建一个作用域,并在eval返回时丢弃。
4、函数中得特殊对象arguments是静态副本,而不像非严格模式那样,修改arguments或修改参数变量会相互影响。
5、删除configurable=false的属性时报错,而不是忽略。
6、禁止八进制字面量,如010 (八进制的8)。
7、eval, arguments变为关键字,不可作为变量名、函数名等。
8、一般函数调用时(不是对象的方法调用,也不使用apply/call/bind等修改this)this指向null ,而不是全局对象。
9、若使用apply/call ,当传入null或undefined时,this将指向null或undefined ,而不是全局对象。
10、试图修改不可写属性(writable二false),在不可扩展的对象上添加属性时报TypeError,而不是忽略。
11、arguments.caller,arguments.callee被禁用。
12、ES6 的模块自动采用严格模式,不管你有没有在模块头部加上"use strict";
本文作者:oaoa
本文链接:https://www.cnblogs.com/oaoa/p/14522958.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步