if-else基本格式: if (表達式){ 語句1; ...... }else{ 語句2; ..... } 功能說明 若是表達式的值爲true則執行語句1, 不然執行語句2
var x= (new Date()).getDay(); //獲取今天的星期值,0爲星期天 var y; if ( (x==6) || (x==0) ) { y="週末"; }else{ y="工做日"; } alert(y); //等價於 y="工做日"; if ( (x==6) || (x==0) ) { y="週末"; }
if語句嵌套格式 if (表達式1) { 語句1; }else if (表達式2){ 語句2; }else if (表達式3){ 語句3; } else{ 語句4; }
if (x==1){ y="星期一"; }else if (x==2){ y="星期二"; ... }else if (x==6){ y="星期六"; }else if (x==0){ y="星期日"; }else{ y="未定義";
switch基本格式: switch (表達式) { case 值1:語句1;break; case 值2:語句2;break; case 值3:語句3;break; default:語句4; }
switch(x){ case 1:y="星期一"; break; case 2:y="星期二"; break; case 3:y="星期三"; break; case 4:y="星期四"; break; case 5:y="星期五"; break; case 6:y="星期六"; break; case 7:y="星期日"; break; default: y="未定義"; }
switch比else if結構更加簡潔清晰,使程序可讀性更強,效率更高。javascript
首先要看一個問題,if 語句適用範圍比較廣,只要是 boolean 表達式均可以 用 if 判斷;而 switch 只能對基本類型進行數值比較。二者的可比性就僅限在 兩個基本類型比較的範圍內。 說到基本類型的數值比較,那固然要有兩個數。而後重點來了—— if 語句每一句都是獨立的,看下面的語句: if (a == 1) ... else if (a == 2) ... 這樣 a 要被讀入寄存器兩次,1 和 2 分別被讀入寄存器一次。因而你是否 發現其實 a 讀兩次是有點多餘的,在你所有比較完以前只須要一次讀入寄存器 就好了,其他都是額外開銷。可是 if 語句必須每次都把裏面的兩個數從內存拿 出來讀到寄存器,它不知道你其實比較的是同一個 a。 因而 switch case 就出來了,把上面的改爲 switch case 版本: switch (a) { case 0: break; case 1: } 總結: 1.switch用來根據一個整型值進行多路分支,而且編譯器能夠對多路分支進行優化 2.switch-case只將表達式計算一次,而後將表達式的值與每一個case的值比較,進而 選 擇執行哪個case的語句塊 3.if..else 的判斷條件範圍較廣,每條語句基本上獨立的,每次判斷時都要條件加 載一次。 因此在多路分支時用switch比if..else if .. else結構要效率高。
for循環基本格式: for (初始化;條件;增量){ 語句1; ... } 功能說明: 實現條件循環,當條件成立時,執行語句1,不然跳出循環體
for (var i=1;i<=7;i++){ document.write("<H"+i+">hello</H "+i+"> "); document.write("<br>"); } ---------------------------------------------- var arr=[1,"hello",true]//var dic={"1":"111"} for (var i in arr){ console.log(i) console.log(arr[i]) }
doms=document.getElementsByTagName("p"); for (var i in doms){ console.log(i); // 0 1 2 length item namedItem //console.log(doms[i]) } //循環的是你獲取的th一個DOM元素集,for in用來循環對象的全部屬性, dom元素集包含了你上面輸出的屬性。 //若是你只要循環dom對象的話,能夠用for循環: for (var i=0;i<doms.length;i++){ console.log(i) ; // 0 1 2 //console.log(doms[i]) }
while循環基本格式: while (條件){ 語句1; ... } 功能說明: 運行功能和for相似,當條件成立循環執行語句花括號{}內的語句,不然跳出循環
var i=1; while (i<=7) { document.write("<H"+i+">hello</H "+i+"> "); document.write("<br>"); i++; } //循環輸出H1到H7的字體大小
<script language="JavaScript"> /* sayhello是定義的函數名,前面必須加上function和空格*/ function sayHello(){ var hellostr; var myname=prompt("請問您貴姓?","苑"); hellostr="您好,"+myname+'先生,歡迎進入"探索之旅"!'; alert(hellostr); document.write(hellostr); } //這裏是對前面定義的函數進行調用 sayHello(); </script>
try { //這段代碼從上往下運行,其中任何一個語句拋出異常該代碼塊就結束運行 } catch (e) { // 若是try代碼塊中拋出了異常,catch代碼塊中的代碼就會被執行。 //e是一個局部變量,用來指向Error對象或者其餘拋出的對象 } finally { //不管try中代碼是否有異常拋出(甚至是try代碼塊中有return語句),finally代碼塊中始終會被執行。 }
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語句,若是要執行的語句只有一條,能夠不使用「{}」,但這種寫法並不推薦.但確實這樣能夠簡化代碼:java
var str="one";if (str=="one")alert("str的值爲字符串‘one’";else alter("not one"))
雖然JavaScript中沒有if …. elseif 結構,但可使用if…else的簡寫方式獲得python
//爲了判斷用戶輸入的成績的範圍,咱們使用了多重嵌套的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 語句指定了一個計數器變量,一個測試條件,以及更新該計數器的操做。在每次循環的重複以前,都將測試該條件。若是測試成功,將運行循環中的代碼。若是測試不成功,不運行循環中的代碼,程序繼續運行緊跟在循環後的第一行代碼。在執行該循環後,計算機變量將在下一次循環以前被更新。數組
for (var i=0;i<10;i++) {//for循環的圓括號裏面須放三個句子, //分別是1.初使化計數器 2.判斷條件 更新計數器 alert("i當前的值爲"+i); }
其實for循環語句徹底能夠這樣寫,下面的代碼和上面的效果是同樣的(雖然沒有必要,但從這樣的代碼可清楚看出for循環如何工做的)dom
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 並不真正具備類。事實上,除了說明不存在類,在 ECMA-262 中根本沒有出現「類」這個詞。ECMAScript 定義了「對象定義」,邏輯上等價於其餘程序設計語言中的類。字體
所謂內置對象就是ECMAScript提供出來的一些對象,咱們知道對象都是有相應的屬性和方法,其實這裏不少的js對象跟python的不少語法相似。
object對象:ECMAScript 中的全部對象都由這個對象繼承而來;Object 對象中的全部屬性和方法都會出如今其餘對象中。
ToString() : 返回對象的原始字符串表示。 ValueOf() : 返回最適合該對象的原始值。對於許多對象,該方法返回的值 都與 ToString() 的返回值相同。
包括:
Array ,String , Date, Math, Boolean, Number Function, Global, Error, RegExp , Object
簡介:
在JavaScript中除了null和underfined之外的其餘的數據類型都被定義成了對象,也能夠用建立對象的方法定義變量,String,Math,Array,Date,RegExp都是JavaScript中重要的內置對象,在JavaScript程序中大多數功能都是經過對象實現的
<script language="javascript"> var aa=Number.MAX_VALUE; //利用數字對象獲取可表示最大數 var bb=new String("hello JavaScript"); //建立字符串對象 var cc=new Date(); //建立日期對象 var dd=new Array("星期一","星期二","星期三","星期四"); //數組對象 </script>
1.數組的建立方式
var colors = ['red','color','yellow'];
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循環遍歷操做 |
方法 | 描述 |
---|---|
charAt() | 返回指定索引的位置的字符 |
concat() | 返回字符串值,表示兩個或多個字符串的拼接 |
match() | 返回正則表達式模式對字符串進行產找,並將包含查找結果做爲結果返回(後面正則表達式課程會詳細講) |
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)
建立日期對象只有構造函數一種方式,使用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) |
經常使用內置對象
方法 | 含義 |
---|---|
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之間的數 |