二、控制语句
目录2.1 语句块
JS 使用大括号构成语句块,let只能在块作用域内可见
function fn() {
let a = 1;
var b = 2;
c = 3
}
let d =100
if (1) {
let d = 4;
var e = 5;
f = 6;
if (true) {
console.log(d)
console.log(e)
console.log(f)
console.log("~~~~~~~~~~~~~~~~~")
g = 10
var h = 11
}
}
// console.log(a) // 不可见,var声明在函数内位局部变量
// console.log(b) // 不可见
// console.log(c) // fn()为调用前不可见
console.log(d) // 100 , 块作用域内使用let不可见
console.log(f) // 6 全局可见
console.log(g) // 10
console.log(h) // 11 如果 var 声明不在函数内则会提升为全局变量
2.2 流程控制
2.2.1 条件分支
if (cond1) {
...
}
else if (cond2) {
...
}
else {
...
}
2.2.2 switch-case分支语句
Switch-case 语句要注意穿透问题,一定要恰当的使用break语句,否则会继续顺序向下执行
let x = 3
switch (x) {
case 0:
console.log('zero')
break;
case 1:
console.log('one')
case 2:
console.log('two')
break
case 3:
console.log('three')
case 4:
case 5:
console.log('five')
default:
console.log('defaults')
break;
}
// three
// five
// defaults
2.2.3 for 循环
for(let i=1;i<10;i++) {
console.log(i)
}
console.log("~~~~~~~~~~~~~~~~")
for (var x=0,y=9;x<10;x++,y--) {
console.log(x*y)
}
// 1
// 2
// 3
// 4
// 5
// 6
// 7
// 8
// 9
// ~~~~~~~~~~~~~~~~
// 0
// 8
// 14
// 18
// 20
// 20
// 18
// 14
// 8
// 0
2.2.4 while循环
let x=5;
while(x--) {
console.log(x);
}
// 4
// 3
// 2
// 1
// 0
2.2.5 do-while循环
let x=0;
do {
console.log(x);
} while(x++<5)
// 0
// 1
// 2
// 3
// 4
// 5
2.2.6 for-in循环 & for-of
arr = ['a', 'b', 'c']
for (i in arr) {
console.log(i, arr[i])
}
// 0 a
// 1 b
// 2 c
for (x of arr) {
console.log(x)
}
// a
// b
// c
let obj = {
a: 1,
b:'ssss',
c: true
}
for (i in obj) {
console.log(i, obj.i)
}
// a undefined
// b undefined
// c undefined
for (i in obj) {
console.log(i, obj[i])
}
// a 1
// b ssss
// c true
for (let key in obj) {
console.log(`${key}: ${obj[key]}`)
}
// a: 1
// b: ssss
// c: true
2.2.7 break & continue
- Break: 结束当前循环
- continue: 中断当前循环,直接进入下一次循环