js中严格模式(不能使用函数with(){}、arguments.callee、func.caller、eval()、改变语法this等)

目录

启动方式

限制内容

不能使用

with(obj){}

arguments.callee

func.caller

eval()

改变

未经申明直接使用变量会报错

this默认为undefined,不为window

函数中重复的参数和对象中重复的属性名会报错

使用前缀0表示八进制会报错

删除不可删除属性会报错

eval和arguments不能被重新赋值

 


首先我们要知道js中es3.0与es5.0冲突的部分使用的是es3.0的部分。当严格模式启动时,这部分便使用的是es5.0的部分。

启动方式

在js开头或函数开头使用字符串'use strict',则以字符串'use strict'开头的代码块是使用的严格模式。

限制内容

不能使用

with(obj){}

因为改变作用域链,降低效率所以不使用。改变括号中的作用域,把obj作用域链AO放在括号中,即在括号中访问变量name则优先访问为obj.name。

arguments.callee

arguments.callee函数自身引用,callee是arguments的属性。

func.caller

func.caller,func为函数名,func.caller写在func函数内,否则返回null,表示在该函数运行时的环境,如果其他函数体内运行了该函数,则返回其他函数内容,window下则返回null。

eval()

改变作用域,不使用,可以将括号中的字符串当代码使用。

改变

未经申明直接使用变量会报错

es3中是暗示全局变量

this默认为undefined,不为window

全局范围this还是指向window,this可以被赋为原始值,es3会包装为包装类。es5中不变,依然为原始值。

函数中重复的参数和对象中重复的属性名会报错

es3中不会报错。

使用前缀0表示八进制会报错

删除不可删除属性会报错

eval和arguments不能被重新赋值

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值