1.switch語句函數
語句都很熟悉的啦,只是提一句。switch中的case語句匹配的規則其實是「===」而非簡單的「==」比較,case匹配不會作任何的類型轉換的。優化
2.while和do/while.net
都是循環語句,不一樣的是檢測表達式的位置。while是在循環的頂部,do/while是在循環體的底部檢測。簡單地說不管是否知足循環條件do/while都會至少執行循環體一次,而while則不是這樣。debug
3.標籤語句code
tag:if(matrix){ for(var i = 0 ; i < matrix.lenght ; i++){ var row = matrix[x]; if(!row){ break tag; } } //位置a } //位置b //若是僅僅是break他會跳出到位置a,而上例中則跳轉到了位置b。
4.throw語句htm
異常語句,所謂異常語句是發生異常或錯誤的一個標誌或信號。拋出異常就是指這個情況,捕獲異常實是指處理的過程。例如ip
test(-1); function test(x){ if(x < 0){ throw new Error("不能爲負"); } console.log(x); } //當拋出了異常,Javascript解析器會當即中止執行,並跳轉到異常處理程序,若是找不到則會被當作程序錯誤並輸出錯誤報告。
5.try/catch/finally語句作用域
異常處理機制。字符串
try:定義須要處理的代碼塊;get
catch:在try以後用來在出現異常時進行處理;
finally:不管怎樣都執行的語句,通常用於清理工做。
不過好像coding的時候好像不多用到,那咱們何時纔會用?研究了一下:實際上是爲了程序「體面的退出」。
//例如: try{ window.a.b; }catch(e){ alert(e); alert("continue"); } //若是用if粗糙地判斷你須要先判斷window.a是否合法在判斷window.b不然直接判斷就有可能出現問題。 //可是用try/catch就能夠「體面」的返回報錯,並使程序繼續運行。
6.with語句
*嚴格模式中禁止使用with語句。非嚴格模式也不推薦使用,由於使用with的代碼難於優化切效率比較低。
//with使用: with(objecy){ //body } //with能夠暫時的將object推送到做用域鏈的頂端, 在body以後在恢復做用域鏈。 //好比: with(obj) x=1; //其實就是把obj推向了做用域鏈的頂端並使obj.x = 1; //其實效果和在全局定義obj並obj.x = 1的效果是同樣的; //而且若是obj沒有x屬性的話,上例至關於x = 1;
7.debugger語句
暫停程序執行,相似設置斷點功能。
8.嚴格模式(use strict)
它是ECMAScript5引入的指令(而非語句);
僅僅是一個字符串直接量表達式,對於沒實現ES5的解析器來講,它僅僅是一條沒有反作用的語句,至關於透明的存在。
只能出如今腳本/函數體的開始;
嚴格模式和非嚴格模式↓: 嚴格模式和非嚴格模式區別