第五章 语句
1、在JS中没有块级作用域,在语句块中声明的变量并不是语句块私有的。
2、尽管函数声明语句和函数定义表达式具有相同的函数名,但二者仍然不同。两种方式都创建了新的函数对象,但函数声明语句中的函数名是一个变量名,变量指向函数对象,和通过var声明变量一样,函数定义语句中的函数被显式地提前到了脚本或函数的顶部(函数名和函数体均提前),因此它们在整个脚本和函数内都是可见的。使用var的函数定义表达式的话,只有变量声明提前了,变量的初始化代码仍然在原来的位置。
3、for/in循环不会遍历对象的所有属性,只有可枚举的属性才会被遍历到。
4、通过给循环定义一个标签名,可以在循环体内部使用break和continue来退出循环或者直接跳转到下一个循环的开始。break和continue是唯一可以使用语句标签的。通常用来跳出非最近的循环体。
5、使用while来完全模拟for循环是不可能的,因为有continue时的行为表现不一致。即使用try-finally使每次都能自增,也会在try语句块中有break时产生差别。