== 读 JavaScript 高级程序设计(第3版)第三章笔记 ==
== 只记录了个人觉得需要注意的部分 ==
for-in 语句
for-in
语句是一种精确的迭代语句,可以用来枚举对象的属性。以下是 for-in
语句的语法:
for (property in expression) statement
以下是一个事例:
for (var propName in window) {
document.write(propName);
}
- 以上例子使用
for-in
循环来显示了 BOM 中window
对象的所有属性。 var
非必需,但推荐使用。- 如果要迭代的对象的变量值为
null
或undefined
,for-in
语句会抛出错误。ECMAScript5 更正了这一行为;对这种情况不再抛出错误,而只是不执行循环体。(做好避免)
outermost
break
和 continue
语句都可以与 label
语句联合使用,从而返回代码中特定的位置。多用于循环嵌套时;
outermost
:表示返回外部的for
语句- 对于
break
和continue
的功能举例:
let num = 0;
outermost:
for (i = 0; i < 10; i ++) {
for (j = 0; j < 10; j ++) {
if (i == 5 && j == 5) {
break outermost;
}
num ++;
}
}
alert (num); //55
let num = 0;
outermost:
for (i = 0; i < 10; i ++) {
for (j = 0; j < 10; j ++) {
if (i == 5 && j == 5) {
continue outermost;
}
num ++;
}
}
alert (num); //95
关于函数
严格模式
严格模式对函数有一些限制,如果发生下列情况,就会导致语法错误,代码无法执行:
- 不能把函数命名为
eval
或arguments
; - 不能把参数命名为
eval
或arguments
; - 不能出现两个命名参数同名的情况。
理解参数
- 由于 ECMAScript 中的参数是用一个数组来表示的,函数接收的始终都是这个数组,而不关心数组中包含哪些参数。故ECMAScript 函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型;
arguments
对象与数组类似,可以使用方括号语法访问它的每一个元素;arguments.length
:确定传递进来多少参数;