寫在前面:前面的內容記錄了JavaScript的一些基本概念,本次主要講解一下JS中常用的語句。 和大多數其他編程語言一樣,JS也主要包括:選擇、迴圈、錯誤檢測、函數等。JS的語句基本是由值、運算符、表達式、關鍵字和註釋構成,但並不是語句一定包含所有以上要素。 電腦程式一般是指能夠被電腦執行的一 ...
寫在前面:前面的內容記錄了JavaScript的一些基本概念,本次主要講解一下JS中常用的語句。
和大多數其他編程語言一樣,JS也主要包括:選擇、迴圈、錯誤檢測、函數等。JS的語句基本是由值、運算符、表達式、關鍵字和註釋構成,但並不是語句一定包含所有以上要素。
電腦程式一般是指能夠被電腦執行的一些列指令的集合。在編程語言中,這些指令被稱為語句,JavsScript程式就是一系列的JavaScript語句集合。
一 選擇語句
這裡我打算用一個例子來說明,可能會更好理解:
1 var age = parseInt(prompt("please enter your age:")); 2 if(age < 0){ 3 alert("are you sure?"); 4 }else if(age > 120){ 5 alert("you must be dead!"); 6 }else{ 7 alert("you are still alice!"); 8 }
代碼說明:if-else語句和其他區大多數編程語句一樣。通過判斷if後面的括弧內的表達式的真假,決定是否執行緊跟其後的大括弧內的代碼。
上面的代碼含義如下:第一行表示接受一個數字並保存在變數age中(現在不必在一parseInt()是什麼東東)。
第二行代碼在判斷括弧內的表達式是否成立,如果成立將執行第三行代碼(我覺得他應該不會被執行,嘿嘿),然後
準備執行第四行。如果不成立,那麼程式將跳過第三行,準備執行第四行。
第三行代碼會彈出一個提示框。
第四行代碼和第一行功能類似,判斷age是否大與120,如果大於將執行第五行代碼,否者將跳過,並準備執行第六行代碼。
第五行代碼也是彈出一個提示框。
第六行表示age即不滿足if後面的條件,也不滿足else if後面的條件,最終會被執行else後面的代碼。
第七行也是彈出一個提示框。
如果有很多種情況,那我們豈不是要用很多if-else-if……?那樣即難以閱讀又難以維護。你當然不用那麼做,JavaScript提供了另外一種選擇的方式,請看下麵的代碼:
1 var myBirthdayMonth = parseInt(Math.random()*12+1); 2 switch(myBirthdayMonth){ 3 case 1 : alert("你屬鼠的。"); 4 break; 5 case 2 : alert("你屬牛的。"); 6 break; 7 case 3 : alert("你屬虎的。"); 8 break; 9 //中間還有其他的屬相 10 case 11 : alert("你屬狗的。"); 11 break; 12 default:alert("你屬豬的。"); 13 }
當有多種情況需要判斷時,我們可以用switch-case語句。它的執行過程是把switch後括弧捏的表達式的值分別依次和下麵每一個case後面的值做比較,如果相等則執行該case後面的語句,執行完後若遇到break,則停止執行後面所有的語句(switch後大括弧內的),並退出,如果前面所有的case 都無法匹配mybirthdayMonth,那麼程式最終將執行default後面的語句。
上面的例子中我們假定了每個月就有一種屬相,第一行代碼是隨機生成一個1--12的數字充當生日的月份(這裡不必在意它是怎麼實現的)。
二 迴圈語句
Javascript提供了多種迴圈語句,for迴圈,while,do-while。迴圈即指反覆執行某一段代碼。
1、for迴圈
1 for(var i = 1;i <= 10; i++){ 2 console.log(i); 3 }
說明:var = 1;聲明迴圈控制變數,i <= 10;判斷迴圈條件,i ++更新控制變數(這裡是以1為單元遞增)。最終輸出1-10.
簡單的說以上迴圈實現的功能是:先初始化一個變數 i,初始值為1,然後判斷i的值是否小於或等於10,若是,則執行大括弧的代碼(這裡是在控制帶列印出i的值),然後i的值加1,再判斷i是否小於或等於10,一直迴圈到i的值大於10時,程式停止執行。
2、while迴圈
1 var i = 10; 2 while(i > 0){ 3 console.log(i); 4 i--; 5 }
說明:首先聲明一個變數i,while迴圈執行時會首先判斷i > 0是否成立,若成立,則執行大括弧內的代碼(這裡是先在控制台列印i的值,單後把i的值減1),執行完後再判斷i > 10是否成立,往複迴圈,直到表達式不成立。如果一開始表達式就不成立,必須i初始化時是-1,那麼大括弧內部的代碼將永遠不會執行。
3、do-while迴圈
1 var i = 10; 2 do{ 3 console.log(i); 4 i--; 5 }while(i > 0)
do-while迴圈和while迴圈執行過程幾乎一樣。不同點在於,它會先執行一次大括弧內的代碼,然後再開始判斷。即使是i初始化時的值是-1,也會列印一次i的值,並把i的值減1。
三 異常和錯誤
1、throw
throw 語句拋出一個程式異常。
1 var userNumber = prompt("please enter a number:"); 2 if(isNaN(userNumber)){ 3 throw "this is not a number"; 4 }else{ 5 alert("yes,it is a number"); 6 }
說明:userNumber接受一個來自用戶輸入的值,if判斷輸入值是否是數字,如果不是數字將拋出一個異常“this is not a number”。若是一個數字,將彈出“yes it is a number”。需要註意的是,當執行到throw是,該語句之後若還有其他語句,都將不會被執行。
2、try-catch
1 try{ 2 alertt("hello world"); 3 }catch(err){ 4 console.log(err.message); 5 }finally{ 6 console.log("eventually I'll be executed"); 7 }
try定義了需要被檢測的代碼塊。
catch定義了當檢測到錯誤是需要被執行的代碼,參數就是檢測到的錯誤對象。包含了錯的信息,代碼等。
finally定義了無論是否檢測到錯誤都將執行的代碼。
try的好處是即使檢測到錯誤,程式也不會被阻塞,它將繼續往下執行。
3、自定義異常處理
通過throw和try-catch我們可以輕鬆自定義錯誤捕獲和異常拋出。
1 var x = parseInt(Math.random() * 20); 2 try{ 3 if(x == "") throw "為空"; 4 if(isNaN(x)) throw "不是一個數字"; 5 if(x > 10) throw "太大了"; 6 if(x < 5) throw "太小了"; 7 } 8 catch(err) { 9 console.log("輸入的值 " + err;) 10 }
throw語句拋出的異常將被當做錯誤對線傳給catch,最後在catch語句中我們可以獲取到關於錯誤的具體情況了(這裡是x的範圍)。
最後:如果大家覺得這裡些的不夠清楚或有問題,建議大家上W3School或MDN查看詳細教程。