這段時間一直在期末復習骚揍,這幾天考完試末字管,輕松了許多,終于放假啦信不。
上篇文章(很久了)說的是 JavaScript 的操作符嘲叔,有相等操作符、條件操作符浑塞、賦值操作符等等,這篇文章寫的是語法篇的最后兩個內容:語句
和 函數(shù)
政己。
語句
語句由一個或多個詞組成酌壕,可以完成某些任務和操作。
if 語句
最常用也很熟悉的語句了歇由,它的語法如下:
if (condition) {
block1
} else {
block2
}
其中 condition 會被轉換成一個布爾值來確定執(zhí)行那一塊代碼卵牍,例如如果 condition 為 true,則執(zhí)行 block1 的代碼沦泌,否則執(zhí)行 block2 糊昙。如果想要更省事一點,也可以直接用三目運算符來替代 if 語句谢谦,例如下面的代碼跟上述的 if 語句是一樣的释牺,
condition ? block1 : block2 ;
do-while 語句
一種循環(huán)語句,它會至少先執(zhí)行循環(huán)體內的代碼一次回挽,然后在根據條件判斷是否繼續(xù)循環(huán)没咙,語法如下:
do {
code
} while (condition);
while 語句
看看它的語法,比較下跟 do-while 的區(qū)別:
while (condition) {
code
}
可以看到千劈,while 循環(huán)語句是上來就開始判斷 condition 是否為 true 祭刚,是的話才會執(zhí)行代碼,否則不會執(zhí)行墙牌;而前面的 do-while 循環(huán)是會至少執(zhí)行一次代碼再來判斷條件涡驮,這就是區(qū)別。
for 語句
依然是循環(huán)語句喜滨,而且也是經常使用的循環(huán)語句捉捅。它的語法如下:
for ( init; expression; loop-expression) {
code
}
怎么使用它呢?下面的代碼會輸出 1 到 10 之間的數(shù):
for (var i = 1; i<=10; i++) {
console.log(i);
}
其實 while 循環(huán)能做到的虽风,for 循環(huán)也同樣能做到锯梁,上面的如果用 while 循環(huán)是這樣:
var i = 1;
while (i <= 10) {
console.log(i);
i++;
}
既然這樣即碗,那還要 for 循環(huán)干嘛呢?for 循環(huán)可以做到根據已知條件來確定循環(huán)次數(shù)陌凳,比如你要打印某個數(shù) 10 次剥懒,那用 for 循環(huán),中間 i < 10 直接寫就好了合敦;但如果事先并不知道要循環(huán)多少次初橘,條件也不是很清楚,那么用 while 循環(huán)先執(zhí)行著也是不錯充岛,如果這段代碼要先被執(zhí)行一次保檐,那就用 do-while 好了。
for-in 語句
是一種迭代語句崔梗,可以用來枚舉對象的屬性夜只,非常實用的語句。語法如下:
for (var propName in window) {
document.write(propName);
}
執(zhí)行這段代碼你將看到瀏覽器 window 對象的所有可枚舉屬性蒜魄。
label 語句
label 語句可以在代碼中添加標簽扔亥,以便將來使用,語法如下:
labelName: code
通常會與 for 等循環(huán)語句配合使用谈为,由 break 或 continue 語句來引用旅挤。
break 和 continue 語句
break 語句可以讓代碼停止執(zhí)行,用在 for 語句中會立即退出循環(huán)伞鲫;而 continue 語句也是讓代碼停止執(zhí)行粘茄,但它不會退出循環(huán),而是從循環(huán)的頂部繼續(xù)執(zhí)行秕脓,也就是在執(zhí)行下一次循環(huán)柒瓣。
for (var i = 1; i <= 10; i++) {
if ( i % 5 == 0) {
console.log(i);
break;
}
}
上面的代碼找出 10 以內能被 5 整除的數(shù),找到了就輸出吠架,而且找到了就不找了嘹朗,立刻停止退出循環(huán),最后輸出的結果是 5
诵肛。而如果使用 continue 替代 break 呢屹培?
for (var i = 1; i <= 10; i++) {
if ( i % 5 == 0) {
console.log(i);
continue;
}
}
答案顯而易見,會輸出 5
以及 10
怔檩。因為找到了一個 5 之外褪秀,continue 的意思是不用再執(zhí)行下面的代碼了,從頂部開始下一次循環(huán)再找薛训。
with 語句
with 語句可以簡化代碼量媒吗,以一個特定的對象來開頭,減少重復書寫它的次數(shù)乙埃,例如下面的代碼:
var qs = location.search;
var hostName = location.hostname;
var url = location.href;
每次都需要用到 location 這個對象闸英,我們可以把它關聯(lián)起來锯岖,用 with 語句改寫:
with (location) {
var qs = search;
var hostName = hostname;
var url = href;
}
這樣就不必時刻寫 location 字段了,需要注意的是甫何,該語句在 嚴格模式
下是報錯不能用的出吹。
switch 語句
最后一個是 switch 語句,它是為了解決 if 語句分支過多過長的問題辙喂,例如下面這段冗長的 if 語句代碼:
if ( i == 100) {
alert('恭喜你考了滿分');
} else if ( i == 90) {
alert('優(yōu)秀');
} else if (i == 80) {
alert('很不錯');
} else if (i == 70) {
alert('勉強還行');
} else if (i == 60) {
alert('在掛科的邊緣瘋狂試探');
} else {
alert('騷年捶牢,補考見');
}
switch 語句為了優(yōu)化上述代碼,寫成這個樣子:
switch (i) {
case 100:
alert('恭喜你考了滿分');
break;
case 90:
alert('優(yōu)秀');
break;
case 80:
alert('很不錯');
break;
case 70:
alert('勉強還行');
break;
case 60:
alert('在掛科的邊緣瘋狂試探');
break;
default:
alert('騷年巍耗,補考見');
}
switch 語句的好處是能根據條件 i 的值秋麸,來決定是到那一段 case 代碼中去執(zhí)行,并且執(zhí)行完后就 break 掉炬太,而不執(zhí)行接下來的其它 case 灸蟆,這樣條例清晰、一一對應亲族,而 default 就是上面所有 case 都不管用了炒考,那就默認執(zhí)行它里面的內容。
上面這九大語句孽水,基本就是一門編程語言中常用到的語句了票腰,基本上其它編程語句也都是這么幾種城看,只不過語法稍微有所差別女气,寫法不同而已,只要熟悉了上述這幾種語句测柠,在其他語言中同樣適用炼鞠,畢竟語言是互通的。
函數(shù)
函數(shù)也是每門編程語言都會有的語法概念轰胁。有沒有相過谒主,如果一個頁面里面充斥著大量的語句,這些語句實現(xiàn)著各種功能赃阀,有些還經常是重復的霎肯,你其實多寫了幾遍。這時候榛斯,你可以考慮把這些語句
集合起來观游,封裝成一個函數(shù)
。函數(shù)
就是封裝了任意多條語句驮俗,每次需要用的時候就調用它懂缕,通過什么標識來區(qū)別函數(shù)呢?函數(shù)名王凑,js 中函數(shù)使用 function
關鍵字來聲明搪柑,后面緊接的就是函數(shù)名聋丝,在接著就是圓括號,里面存放的是函數(shù)的參數(shù)工碾,用 弱睦,
隔開,最后就是函數(shù)的主體代碼了倚喂。
function funName(arg1,arg2,arg3) {
code
}
上面就是 js 定義一個函數(shù)的格式每篷。函數(shù)可以有一個 return
語句,表示該函數(shù)返回結果,如果使用了 return 語句,則后面的代碼一概不會被執(zhí)行姑曙,比如下面這樣:
function sum(a,b) {
return a + b;
console.log('hello world');
}
輸入兩個參數(shù)值 a 和 b 調用 sum 函數(shù)绣硝,可以計算 a + b 的結果,但后面那句 hello world 是不會被執(zhí)行了黍聂,因為 return 語句就是最終語句了,函數(shù)遇到 return 后就會立即停止退出。另外张症,還有一個 arguments
類數(shù)組對象一直存放著函數(shù)的參數(shù),使用 arguments 可以獲取函數(shù)的參數(shù)信息鸵贬,比如上面的 sum 函數(shù)俗他,以下代碼:
function sum(a,b) {
return a + b;
console.log('hello world');
console.log(arguments.length);
}
當你 sum(10,20)
調用函數(shù)后,最后那句代碼會輸出 2
阔逼,因為你輸入了 10兆衅、20 兩個參數(shù),長度為 2 嗜浮,前面說了羡亩,arguments
存放的是參數(shù)的信息,它是一個類似數(shù)組的東西危融,所以你可以用 arguments[0]
表示第一個參數(shù)畏铆,也就是 10;用 arguments[1]
表示第二個參數(shù)吉殃,也就是 20 辞居。
由于 js 的函數(shù)參數(shù)實際上是一個數(shù)組,所以不傳值或者少傳多傳都不會報錯蛋勺,這點可以說是非常寬松的瓦灶,相比其他語言來說。你可以隨意輸入多個參數(shù)迫卢,只不過會顯示 undefined 倚搬。
js 的函數(shù)沒有重載
這一概念,如果定義兩個名字相同函數(shù)乾蛤,則后者覆蓋前者每界。但由于有 arguments 數(shù)組的存在捅僵,可以通過使用 if 語句判斷傳入的 arguments 參數(shù)來相應執(zhí)行不同的代碼,也算是模擬重載眨层。
(全文完)
喜歡就點右下方的要你「好看」庙楚!