重新巩固JS系列,都是比较基础的东西,可以进行查漏补缺,很快看完,这是第三篇。 其他JS重新巩固系列:
1. 条件语句
1.1 if else语句
//当条件为真时,执行语句1,条件为假时,执行语句2。其中,else部分可以省略
if (条件) {
语句1
} else {
语句2
}
//例子:
let score = 75
if ( score > 80) {
console.log('A')
} else if ( score > 60) {
console.log('B')
} else {
console.log('C')
}
// score为75,小于80但大于60,故输出: B
复制代码
1.2 switch语句
// 当 表达式的值 等于 值1 时,执行 语句1,遇到break语句则跳出switch语句,若都没匹配到值,则执行default中的语句。
switch (表达式) {
case 值1:
语句1
break
case 值2:
语句2
break
default:
语句3
break
}
//例子
let score = 'B'
switch ( score ) {
case 'A':
console.log('> 80')
break
case 'B':
console.log('60 ~ 80')
break
default :
console.log('< 60')
}
// score的值跟case的'B'相匹配,故输出: 60 ~ 80,遇到break,结束switch语句
复制代码
注意:一般情况下,我们在每个case语句后都要加上break语句
来跳出switch语句。若不添加,则会执行匹配到的case语句后的所有语句,直到遇到break为止。
2. 循环语句
2.1 while语句
//当 表示达 为真时,执行 语句1 直到 表达式 为假。
while ( 表达式 ) {
语句1
}
复制代码
注意:在语句1
中一定要对表达式
进行操作,使其在一定循环次数内变为假,否则会导致死循环。
2.2 do while语句
//先执行语句1,然后再根据表达式的真假情况来决定是否继续执行语句1
do {
语句1
} while ( 表达式 )
复制代码
注意:不管什么情况下,do while语句
总会先执行一次语句1
。
2.3 for语句
//首先执行初始化部分,然后进行循环条件的判断,若为真,则执行语句1,最后再执行更新表达式部分。若为假,则结束for循环。
for ( 初始化; 循环条件; 更新表达式) {
语句1
}
复制代码
注意: 初始化
和更新表达式
部分都不是必需的,初始化
部分可以放在for语句外部,而更新表达式
部分可以放在语句1
中。
2.4 for in语句
用于遍历对象的属性。
//遍历对象的属性
for ( 属性名 in 对象) {
语句1
}
复制代码
注意: for in
语句也会遍历原型链上的属性(原型链相关可参考:帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)),若只想遍历对象自身的属性,可以使用以下方式:
for ( let 属性名 in 对象) {
if ( 对象.hasOwnProperty( 属性名 ) ) {
语句1
}
}
复制代码
3. 控制语句
3.1 continue语句
continue语句用于循环语句中,跳过当前的循环,进入下一次循环。
3.2 break语句
break语句用于控制流程中,直接跳出循环语句或者switch语句。
4. 异常捕获语句
/**
* 将可能发生异常的 语句1 放到try语句块中,若 语句1 执行时有异常,则被 catch语句 捕获,
* 接着执行 语句2 ,最后再执行 finally语句块 中的 语句3。
* 其中 finally语句块 中的 语句3,不管 语句1 是否有异常都会执行。
*/
try {
语句1
} catch ( exception ) {
语句2
} finally {
语句3
}
//例子
try {
console.log(myName)
} catch ( exception ) {
alert( exception)
} finally {
alert('bad dream!')
}
/**
* 在try语句块中,我们试图输出变量myName的值,但是变量myName并未定义,所以出现异常被catch语句块捕获,
* 然后弹窗出现内容:ReferenceError: myName is not defined,
* 最后再执行finally语句,弹窗出现内容:bad dream!
*/
复制代码
5.with语句(不推荐使用)
可以让我们在访问对象属性时更加简短。with语句在性能上存在问题,以及在作用域上可能会引起不必要的混淆,ES5的严格模式中也禁用了该语句,不推荐使用。
with ( 表达式 ) {
语句
}
//例子:
let cc = {
name: 'cc',
age: 100,
company: {
name: 'BEST',
address: 'Hang Zhou'
}
}
with(cc) {
console.log(`company name:${company.name}, company address: ${company.address}`)
}
//输出: company name:BEST, company address: Hang Zhou
//替代的方法:
let company = cc.company
console.log(`company name:${company.name}, company address: ${company.address}`)
//输出: company name:BEST, company address: Hang Zhou
复制代码