语句##
块语句 block###
用一对花括号定义
js没有块级作用域
声明语句###
常见错误
try catch语句###
try
后面必须接一个cath
或finally
语句
发生嵌套时的执行顺序:
红框内部没有catch
,所以会跳到最近的catch
去处理,即外部的catch
异常已经在内部处理,就不再抛到外部了
cath
再抛异常,内部异常没有处理,抛给外面,外面处理之前,要先执行里面的finally
语句
for in语句###
坑比较多
with语句###
不建议使用
严格模式##
严格模式是一种特殊的执行模式,它修复了部分语言上的不足(禁用with),向上兼容(有利于编写高质量,健壮性的代码),提供更强的错误检查,并增强安全性(在eval中使用了独立的作用域).
不允许用with语句###
不允许未声明的变量被赋值###
arguments变为参数的静态副本###
- 非严格模式下,agm[0]和参数a相互绑定,但是当不传参数时,a的值为undefined,此时若修改了agm[0]的值,a仍然是undefined!!!
- 严格模式下,agm和形参无任何关系
- 严格模式下,如果传入的参数是对象,由于js的call by share,修改对象属性时,会相互影响
delete参数、函数名报语法错###
dele不可配置的属性报错###
对象字面量重复属性名报语法错误###
禁止八进制字面量###
eval,arguments变为关键字,不能作为变量,函数名###
eval变成了独立作用域###
其余情况###
静态绑定##
Javascript语言的一个特点,就是允许"动态绑定",即某些属性和方法到底属于哪一个对象,不是在编译时确定的,而是在运行时(runtime)确定的。
严格模式对动态绑定做了一些限制。某些情况下,只允许静态绑定。也就是说,属性和方法到底归属哪个对象,在编译阶段就确定。这样做有利于编译效率的提高,也使得代码更容易阅读,更少出现意外。比如禁止使用with语句,创设eval作用域。