標籤:3.3 截取 跳出迴圈 rand color split 常用方法 錯誤 第一個
一,分支結構
- 單一選擇結構(if)
- 二路選擇結構(if/else)
- 內聯三元運算子 ?:
- 多路選擇結構(switch)
var condition = true; if (condition) { alert("我將出現!"); } condition = false; if (condition) { alert("我不會出現!"); } else { alert("我會出現!"); } condition ="some string"; if (condition) { alert("可以直接對任何資料類型進行if判斷,在判斷時計算會自動將其轉換成布爾值!"); } var val = condition?"當為true時我將被返回":"當為false時我將被返回"; alert(val);//將輸出"當為true時我將被返回"
對於if..else語句,如果要執行的語句只有一條,可以不使用“{}”,但這種寫法並不推薦.但確實這樣可以簡化代碼:
var str="one";if (str=="one")alert("str的值為字串‘one’";else alter("not one"))
雖然JavaScript中沒有if …. elseif 結構,但可以使用if…else的簡寫方式得到
//為了判斷使用者輸入的成績的範圍,我們使用了多重嵌套的if .. else語句 var num = window.prompt("請輸入XXX的成績!",""); num *=1;//window.prompt方法始終只返回字串,用這樣的方法將其轉換成數字 if (isNaN(num) && num) {//不能將其它值轉換成數字時將返回NaN,可以用內建的isNaN判斷值是否是NaN alert("您輸入的不是一個數字!"); } else { if (num<=100 && num>=90) { alert("Excellent!"); } else { if (num =80) { alert("Good!"); } else { if (num < 80 && num >= 70) { alert("So so!"); } else { if (num < 70 && num >=60) { alert("Be careful !!!"); } else { if (num < 60 && num >= 0) { alert("Oh, NO!"); } else { alert("USB!"); } } } } } } //上面的代碼由於用了多重的if..else嵌套,顯得非常的混亂,簡化只須將else後的花括弧去掉就行了 // if (...) {...}這算是一句 if (isNaN(num)) { alert("您輸入的不是一個數字!"); } else if (num<=100 && num>=90) { alert("Excellent!"); } else if (num =80) { alert("Good!"); } else if (num < 80 && num >= 70) { alert("So so!"); } else if (num < 70 && num >=60) { alert("Be careful !!!"); } else if (num < 60 && num >= 0) { alert("Oh, NO!"); } else { alert("USB!"); } //看上去清晰多了,但要注意的是,JavaScript中沒有elseif 這樣的文法,所以上的else if之間是有空格的
用於進行多次判斷的switch語句
switch(condition) { //switch本來就是跳轉的意思(又稱為“開關”),所以switch語句就是判斷情況,跳到符合的情況開始執行 case 4: alert("c的值是4"); case 3: alert("c的值肯定大於等於3"); case 2: alert("c的值肯定大於等於2"); case 1: alert("c的值肯定大於等於1"); } //可以使用 break來只執行符合一個條件的語句 switch(condition) { case 4: alert("c的值是4"); break; case 3: alert("c的值是3"); break; case 2: alert("c的值是2"); break; case 1: alert("c的值是1"); break; } var condition="one"; switch(condition) {//switch不但可以用來判斷數字,還可以判斷字串,甚至是不定的變數 case "one": alert("condition的值是字串‘one‘ !"); break; case "three": alert("condition的值是字串‘three‘ !"); break; case "four": alert("condition的值是字串‘four‘ !"); break; case "five": alert("condition的值是字串‘five‘ !"); break; default://當所有情況都不匹配時,將執行default語句後的 alert("我們要萬無一失!condition什麼都不是!");
二,迴圈
迴圈用來指明當某些條件保持為真時要重複的動作。當條件得到滿足時,就跳出迴圈語句。在JavaScript中有四種迴圈結構可用。
- 由計數器控制的迴圈(for)
- 在迴圈的開頭測試運算式(while)
- 在迴圈的末尾測試運算式(do/while)
- 對對象的每個屬性都進行操作(for/in)
for 語句指定了一個計數器變數,一個測試條件,以及更新該計數器的操作。在每次迴圈的重複之前,都將測試該條件。如果測試成功,將運行迴圈中的代碼。如果測試不成功,不運行迴圈中的代碼,程式繼續運行緊跟在迴圈後的第一行代碼。在執行該迴圈後,電腦變數將在下一次迴圈之前被更新。
for (var i=0;i<10;i++) {//for迴圈的圓括弧裡面須放三個句子, //分別是1.初使化計數器 2.判斷條件 更新計數器 alert("i當前的值為"+i); }
其實for迴圈語句完全可以這樣寫,下面的代碼和上面的效果是一樣的(雖然沒有必要,但從這樣的代碼可清楚看出for迴圈如何工作的)
var i=0;//迴圈進行之前初始化i for(;;) {//for語句括弧中必須有三個語句,但可以為空白語句 if (i<10) {//當條件為true時才執行代碼 alert("i當前的值為"+i); } else {//當條件為false時就退出迴圈 break;//使用break退出迴圈 } }
一個死迴圈最能說明while的工作方式了(但這樣的錯誤我們絕不能在實際編程中出現)
while (true) { alert("你關不掉我的!");//這就是網上那些所謂的高手寫的“關不上的窗(周傳雄新歌,力薦)”代碼 }
do..while迴圈與while迴圈不同之處在於它至少將代碼塊中的代碼執行一次
do { alert("我肯定會出現一次的"); } while (false);
三,常用內建對象
所謂內建對象就是ECMAScript提供出來的一些對象,我們知道對象都是有相應的屬性和方法,其實這裡很多的js對象跟python的很多文法類似
3.1 數組 Array
1.數組的建立方式
var colors = [‘red‘,‘color‘,‘yellow‘];
- 使用建構函式(後面會講)的方式建立 使用new關鍵詞對建構函式進行建立對象
var colors2 = new Array();
2,數組的賦值
var arr = [];//通過下標進行一一賦值arr[0] = 123;arr[1] = ‘哈哈哈‘;arr[2] = ‘嘿嘿嘿‘
3 數組的常用方法
| 方法 |
描述 |
| concat() |
把幾個數組合并成一個數組 |
| join() |
返回字串,其中包含了串連到一起的數組中的所有元素,元素由指定的分割符分割開來 |
| pop() |
移除數組的最後一個元素 |
| shift() |
移除數組的第一個元素 |
| unshift() |
往數組的開頭添加一個元素,並且返回新的長度 |
| slice(start,end) |
返回數組的一段 |
| push() |
往數組的最後添加一個元素,並返回新的長度 |
| sort() |
對數組進行排序 |
| reverse() |
對數組進行反轉 |
| length |
它是一個屬性,唯一的一個,擷取數組的長度,可以結合for迴圈遍曆操作 |
3.2 字串String
| 方法 |
描述 |
| charAt() |
返回指定索引的位置的字元 |
| concat() |
返回字串值,表示兩個或多個字串的拼接 |
| match() |
返回Regex模式對字串進行產找,並將包含尋找結果作為結果返回(後面Regex課程會詳細講) |
| replace(a,b) |
字串b替換了a |
| search(stringObject) |
知名是否存在相應匹配。如果找到一個匹配,search方法將返回一個整數值,指明這個匹配距離字串開始的位移位置。如果沒有找到匹配,返回-1 |
| slice(start,end) |
返回start到end-1之間的字串,索引從0開始 |
| split(’a‘,1) |
字串拆分,以a拆分,第一個參數返回數組的最大長度 |
| substr(start,end) |
字串截取,左閉右開 |
| toUpperCase() |
返回一個新的字串,該字串字母都變成了大寫 |
| toLowerCase() |
返回一個新的字串,該字串字母都變成了小寫 |
//1.將number類型轉換成字串類型var num = 132.32522;var numStr = num.toString()console.log(typeof numStr)
//四捨五入var newNum = num.toFixed(2)console.log(newNum)
3.3 Date日期對象
建立日期對象只有建構函式一種方式,使用new關鍵字
//建立了一個date對象var myDate = new Date();
常用的方法
| 文法 |
含義 |
| getDate() |
根據本地時間返回指定日期對象的月份中的第幾天(1-31)。 |
| Date() |
根據本地時間返回當天的日期和時間 |
| getMonth() |
根據本地時間返回指定日期對象的月份(0-11) |
| getFullYear() |
根據本地時間返回指定日期對象的年份(四位元年份時返回四位元字) |
| getDay() |
根據本地時間返回指定日期對象的星期中的第幾天(0-6) |
| getHours() |
根據本地時間返回指定日期對象的小時(0-23) |
| getMinutes() |
根據本地時間返回指定日期對象的分鐘(0-59) |
| getSeconds() |
根據本地時間返回指定日期對象的秒數(0-59) |
3.4 Math 內建對象
常用內建對象
| 方法 |
含義 |
| Math.floor() |
向下取整,稱為"地板函數" |
| Math.ceil() |
向上取整,稱為‘地板函數‘ |
| Math.max(a,b) |
求a和b中的最大值 |
| Math.min(a,b) |
求a和b中的最小值 |
| Math.random() |
隨機數,預設0-1之間的隨機數,公式min+Math.random()*(max-min),求min~max之間的數 |
javaScript之分支判斷與內建對象