JavaScript 語句:express
一、它是以分號結束的,用來執行以使某件事發生數組
二、JavaScript 程序能夠當作一系列可執行語句的集合,通常爲順序執行,但咱們可使用條件、循環或跳轉語句來改變執行順序函數
JavaScript 語句分類:優化
一、表達式語句:諸如賦值和函數調用這些有反作用的表達式,能夠做爲獨立的語句,咱們把這種表達式看成語句的用法也稱作表達式語句spa
// 賦值表達式 count = 831143; // 函數調用 console.log(count);
二、複合語句和空語句:咱們可使用花括號將多條語句括起來造成複合語句,而使用分號產生一條空語句debug
// 花括號建立複合語句 { x = Math.PI; sx = Math.sin(x); console.log("sin(PI) = " + sx); } // 分號產生空語句,這裏將數組內容所有置爲 0 for (let i = 0; i < arr.length; arr[i++] = 0) ;
注:JavaScript 爲函數做用域,而不是塊級做用域,因此語句裏聲明的變量並非語句塊私有的調試
三、聲明語句:用來聲明或定義變量或函數,如 var、let 和 functioncode
// 聲明變量 var a = 12; let b = 4; console.log(a/b); // 聲明函數 function test(num) { console.log(num * num); } test(a); // 輸出 a^2
注:var 聲明的變量沒法經過 delete 刪除orm
四、條件語句:經過判斷指定表達式的值來決定執行仍是跳過某些語句,包括 if/else 和 switch對象
// expression 爲表達式,statement 是當 expression 爲真時執行的語句 if (expression) statement; // 咱們也能夠添加 else [if] 語句增長其分支 if (expression1) statement1; else if (expression2) statement2; ... else statement_else; // switch 經過 expression 的值來肯定執行哪一個 case 的語句,case 匹配操做採用 "===" 而不是 "==",因此匹配時不作類型轉換 // 語句裏的 break 是可選的,若無 break 它會在匹配的 case 順序執行下去,直到遇到 break 或 switch 結束時才結束,若全部 case 都不匹配則執行 default switch(expression) { case 1: statement1; break; case 2: ... case n: statementn; break; default: statement_default; break; }
五、循環語句:咱們能夠把該語句當成程序路徑的一條迴路,即讓一部分代碼重複執行
該類語句包含 while、do/while、for 和 for/in
a、在執行 while 語句以前,JavaScript 解釋器首先計算 expression 的值,若它的值爲假,則跳過 statement 轉而執行下一條語句;
若值爲真,則執行 statement 語句,並從新計算 expression 的值
// 計算 1 + 2 + ... + 9 let sum = 0, count = 9; while (count > 0) { sum = sum+count; count--; } console.log(sum);
b、do/while 與很是類似,但該語句會先執行 statement 的內容,再進行判斷,即該語句循環體至少執行一次
// 若爲 while 循環,則該循環體不會被執行,由於 while 先進行表達式判斷 let num = 0; do{ num = (num+1) * 2; }while (num > 0 && num < 100);
c、for (initialize; test; increment) 先由 initialize 初始化原始值;test 對值進行判斷,若假則退出;increment 對該變量進行相應的更新
// 輸出 1^2, 2^2, ..., 9^2 for (let i = 1; i < 10; ++i) { console.log(i * i); }
d、for/in 循環能夠用來遍歷對象
// 輸出數組元素 let arr = [1, 2, 3, 4, 5]; for (let num in arr) console.log(num);
六、跳轉語句:它使程序的執行從一個位置跳轉到另外一個位置
a、break:退出最內層循環或 switch 語句
b、continue:執行下一次循環,只能在循環體內使用
c、return:指定函數調用後的返回值,只能在函數體內出現,不然報語法錯誤
d、throw:用來拋出異常,結束 throw 同一塊後面的代碼,再由相應 catch 捕獲處理
e、try/catch/finally:用來處理異常,try 嘗試執行語句,如有異常,則由 catch 塊來處理,finally 中放置清理代碼
注:若 break 和 continue 帶標籤,則退出或繼續相應標籤的代碼段;
異常會沿着 JavaScript 方法的詞法結構和調用棧向上傳播,若未找到對應的異常處理程序,則程序會將該異常當成錯誤來處理;
無論 try 塊內是否有異常,finally 語句塊內的代碼總會執行,即便有其餘跳轉語句跳出 try/catch/finally 語句,finally 仍會在跳出前執行
七、其餘語句:with 和 debugger
a、with (obj):將 obj 添加到做用域鏈的頭部,而後執行後續代碼,最後將做用域鏈恢復到原始狀態
// with 語句很是難於優化,且與沒有使用 with 語句的代碼相比,它運行得更慢 with (document.form[0]) { // 等價於 document.form[0].name.vaule = "Lemon" name.value = "Lemon"; }
b、debugger:用來產生一個斷點,代碼執行時會中止在斷點位置,從而使咱們能夠調試程序
function check(obj) { if (obj === undefined) debugger; ... }
注:嚴格模式下禁止使用 with 語句;debugger 語句不會啓動調試器,但若是調試器已經在運行中,這條語句纔會真正產生一個斷點