严格模式-use strict
变量使用前必须声明:
不能直接对变量操作delete:
静默失败转为异常
常见的静默失败:
- 给对象不可写属性赋值
- 给对象只读属性赋值
- 给不可扩展对象的新属性赋值
- 删除对象中不可删除的属性
函数-参数是唯一
函数-实参和形参的映射关系不存在
形参有默认值时,默认开启严格模式,即实参和形参的映射关系不存在:a里面的值是实参,arguments是形参
不允许使用eval()、with()
eval():将字符串解析为js语句为什么不让用了,因为大强大了,会引起一些安全漏洞
with():改变函数执行时的上下文
eval、arguments不能作为标识符
函数的默认this指向变为undefined
不允许出现八进制数
0b开头是二进制,0开头是八进制,0x开头是十六进制因为0开头会有歧义,有可能是补位
不能使用caller和arguments.callee
callee使用场景:匿名函数中需要调用本身、递归等功能:
代替方案:给匿名函数命名
转载自:https://segmentfault.com/a/1190000042228389