严格模式备忘

语法

严格模式中意外创建全局变量被抛出错误替代
静默失败的赋值操作 (给不可写属性赋值, 给只读属性(getter-only)赋值赋值, 给不可扩展对象(non-extensible object)的新属性赋值)
试图删除不可删除的属性时会抛出异常(之前这种操作不会产生任何效果)
一个对象内的所有属性名在对象内必须唯一
严格模式下重名参数被认为是语法错误
严格模式禁止八进制数字语法
严格模式简化了代码中变量名字映射到变量定义的方式
严格模式禁用 with
严格模式下的 eval 不在为上层范围(surrounding scope,注:包围eval代码块的范围)引入新变量
严格模式禁止删除声明变量
让eval和arguments变的简单
名称 eval 和 arguments 不能通过程序语法被绑定(be bound)或赋值
参数的值不会随 arguments 对象的值的改变而变化
不再支持 arguments.callee

安全

指定的this不再被封装为对象,而且如果没有指定this的话它值是undefined:
fun.caller和fun.arguments都是不可删除的属性而且在存值、取值时都会报错
arguments不会再提供访问与调用这个函数相关的变量的途径

未来

严格模式中一部分字符变成了保留的关键字。这些字符包括implements, interface, let, package, private, protected, public, static和yield。
严格模式禁止了不在脚本或者函数层面上的函数声明

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值