從新鞏固JS系列,都是比較基礎的東西,能夠進行查漏補缺,很快看完,這是第三篇。 其餘JS從新鞏固系列:javascript
//當條件爲真時,執行語句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 時,執行 語句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爲止。java
//當 表示達 爲真時,執行 語句1 直到 表達式 爲假。
while ( 表達式 ) {
語句1
}
複製代碼
注意:在語句1
中必定要對表達式
進行操做,使其在必定循環次數內變爲假,不然會致使死循環。post
//先執行語句1,而後再根據表達式的真假狀況來決定是否繼續執行語句1
do {
語句1
} while ( 表達式 )
複製代碼
注意:無論什麼狀況下,do while語句
總會先執行一次語句1
。性能
//首先執行初始化部分,而後進行循環條件的判斷,若爲真,則執行語句1,最後再執行更新表達式部分。若爲假,則結束for循環。
for ( 初始化; 循環條件; 更新表達式) {
語句1
}
複製代碼
注意: 初始化
和更新表達式
部分都不是必需的,初始化
部分能夠放在for語句外部,而更新表達式
部分能夠放在語句1
中。ui
用於遍歷對象的屬性。spa
//遍歷對象的屬性
for ( 屬性名 in 對象) {
語句1
}
複製代碼
注意: for in
語句也會遍歷原型鏈上的屬性(原型鏈相關可參考:幫你完全搞懂JS中的prototype、__proto__與constructor(圖解)),若只想遍歷對象自身的屬性,可使用如下方式:.net
for ( let 屬性名 in 對象) {
if ( 對象.hasOwnProperty( 屬性名 ) ) {
語句1
}
}
複製代碼
continue語句用於循環語句中,跳過當前的循環,進入下一次循環。prototype
break語句用於控制流程中,直接跳出循環語句或者switch語句。code
/** * 將可能發生異常的 語句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! */
複製代碼
可讓咱們在訪問對象屬性時更加簡短。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
複製代碼