《JavaScript高级程序设计》 读书笔记(四)

因为 ECMAScript 中不存在块级做用域,所以在循环内部定义的变量也能够在外部访问到 express

//例如:
var count = 10;
for (var i = 0; i < count; i++){
alert(i);
}
alert(i); //10

 

for-in语句
for-in 语句是一种精准的迭代语句,能够用来枚举对象的属性。如下是 for-in 语句的语法:
for (property in expression) statement
下面是一个示例:
for (var propName in window) {
document.write(propName);
}
在这个例子中,咱们使用 for-in 循环来显示了 BOM window 对象的全部属性。每次执行循环
时,都会将 window 对象中存在的一个属性名赋值给变量 propName。这个过程会一直持续到对象中的
全部属性都被枚举一遍为止。与 for 语句相似,这里控制语句中的 var 操做符也不是必需的。可是,
为了保证使用局部变量,咱们推荐上面例子中的这种作法。
ECMAScript 对象的属性没有顺序。所以,经过 for-in 循环输出的属性名的顺序是不可预测的。
具体来说,全部属性都会被返回一次,但返回的前后次序可能会因浏览器而异。
可是,若是表示要迭代的对象的变量值为 null undefinedfor-in 语句会抛出错误。
ECMAScript 5 更正了这一行为;对这种状况再也不抛出错误,而只是不执行循环体。
浏览器

为了保证最大限度的兼容性,建议在使用 for-in 循环以前,先检测确认该对象的值不是 null undefined。 spa

 

label语句
使用 label 语句能够在代码中添加标签,以便未来使用。如下是 label 语句的语法:
label: statement
下面是一个示例:
start: for (var i=0; i < count; i++) {
alert(i);
}
这个例子中定义的 start 标签能够在未来由 break continue 语句引用。
code

加标签的语句通常都要与 for 语句等循环语句配合使用。

对象

breakcontinue语句
break continue 语句用于在循环中精确地控制代码的执行。其中,break 语句会当即退出循环,
强制继续执行循环后面的语句。而 continue 语句虽然也是当即退出循环,但退出循环后会从循环的顶
部继续执行。
blog

 

switch语句
ip

switch 语句中的每一种情形(case)的含义是:“若是表达式等于这个值(value),则执行后面的
语句(statement)”。而 break 关键字会致使代码执行流跳出 switch 语句。若是省略 break 关键字,
就会致使执行完当前 case 后,继续执行下一个 case。最后的 default 关键字则用于在表达式不匹配前
面任何一种情形的时候,执行机动代码(所以,也至关于一个 else 语句)。
从根本上讲, switch 语句就是为了让开发人员免于编写像下面这样的代码:
if (i == 25){
alert("25");
} else if (i == 35) {
alert("35");
} else if (i == 45) {
alert("45");
} else {
alert("Other");
}
而与此等价的 switch 语句以下所示:
switch (i) {
case 25:
alert("25");
break;
case 35:
alert("35");
break;
case 45:
alert("45");
break;
default:
alert("Other");
}
作用域

相关文章
相关标签/搜索