目录
一、if 语句
if (i > 10) {
console.log("这是一个大于10的数");
} else if (i < 0) {
console.log("这是一个小于0的数");
} else {
console.log("这是一个大于0且小于10的数");
}
二、do...while 语句
var i = 0;
do{
i++;
} while (i < 10);
console.log(i); // 10
三、while 语句
var i = 0;
while (i < 10) {
i++;
};
console.log(i); // 9
四、for 语句
let arr = [1,2,3,4,5,6]
for(let i = 0; i < arr.length; i++){
// ...
}
在 for 循环语句中,设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域。
for (let i = 0; i < 3; i++) {
let i = 'abc';
console.log(i);
}
// abc
// abc
// abc
for 循环中作用域的问题:
var a = [];
for (var i = 0; i < 10; i++) {
a[i] = function () {
return i;
};
}
console.log(a[0]()); // 10
上面代码中,变量 i 是 var 命令声明的,在全局范围内都有效,所以全局只有一个变量 i。每一次循环,变量 i 的值都会发生改变,而循环内被赋给数组 a 的函数内部的 console.log(i),里面的 i 指向的就是全局的 i。也就是说,所有数组 a 的成员里面的 i,指向的都是同一个 i,导致运行时输出的是最后一轮的 i 的值,也就是 10。而使用 let 声明变量会形成块级作用域,该变量仅在 let 块级作用域内有效,这样就能避免这一问题了。
var a = [];
for (let i = 0; i < 10; i++) {
a[i] = function () {
return i;
};
}
console.log(a[0]()); // 0
五、for...in 语句
for...in 语句是一种精准的 迭代 语句,可以用来 枚举 对象的属性。
注意:如果对象是null,或者undefined,for...in 语句会报错,所以使用时要先检查一下对象的值是不是null或undefined。
let obj = {
people: ['marry','jary','lily'],
time: new Date().getTime(),
address: 'beiJing'
}
if(obj){
// 如果对象是null,或者undefined,for...in 语句会报错,所以使用时要先检查一下。
for (item in obj) {
console.log(item);
// people
// time
// address
}
}
六、label 语句
了解:Javascript中的Label语句 - 安静的女汉纸 - 博客园
七、break 和 continue 语句
- break 语句:会强制退出并结束 “当前循环”。或者退出一个 switch 语句。
- 通常用于 for、while、do…while 循环语句 或者 switch 条件语句中。
- continue 语句:会退出 “本次循环”,进入 “下一次循环”。
- continue 语句只能应用在 while、for 或者 do…while 循环语句中。
- 当 continue 语句中止本次循环,如果循环条件的结果是 false ,那就退出循环,这个时候就不会执行下一次循环了。
// break
let num = 0;
for (let i = 0; i < 10; i++) {
if (i % 5 == 0) {
break;
}
num++;
}
console.log(num); // 4
// continue
let num = 0;
for (let i = 0; i < 10; i++) {
if (i % 5 == 0) {
continue;
}
num++;
}
console.log(num); // 8
八、with 语句
弊端:耗性能。
了解:javascript中with语句的用法 - 特雷西one - 博客园
九、switch 语句
switch(expression){
case value: statement
break;
case value: statement
break;
default: statement
}