JavaScript 學習之路-語法篇(下)

這段時間一直在期末復習骚揍,這幾天考完試末字管,輕松了許多,終于放假啦信不。

上篇文章(很久了)說的是 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í)行不同的代碼,也算是模擬重載眨层。

(全文完)
喜歡就點右下方的要你「好看」庙楚!

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市趴樱,隨后出現(xiàn)的幾起案子馒闷,更是在濱河造成了極大的恐慌,老刑警劉巖叁征,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纳账,死亡現(xiàn)場離奇詭異,居然都是意外死亡捺疼,警方通過查閱死者的電腦和手機疏虫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來啤呼,“玉大人卧秘,你說我怎么就攤上這事」倏郏” “怎么了翅敌?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長惕蹄。 經常有香客問我蚯涮,道長,這世上最難降的妖魔是什么焊唬? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任恋昼,我火速辦了婚禮看靠,結果婚禮上赶促,老公的妹妹穿的比我還像新娘。我一直安慰自己挟炬,他們只是感情好鸥滨,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著谤祖,像睡著了一般婿滓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上粥喜,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天凸主,我揣著相機與錄音,去河邊找鬼额湘。 笑死卿吐,一個胖子當著我的面吹牛旁舰,可吹牛的內容都是我干的。 我是一名探鬼主播嗡官,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼箭窜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了衍腥?” 一聲冷哼從身側響起磺樱,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎婆咸,沒想到半個月后竹捉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡尚骄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年活孩,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乖仇。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡憾儒,死狀恐怖,靈堂內的尸體忽然破棺而出乃沙,到底是詐尸還是另有隱情起趾,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布警儒,位于F島的核電站训裆,受9級特大地震影響,放射性物質發(fā)生泄漏蜀铲。R本人自食惡果不足惜边琉,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望记劝。 院中可真熱鬧变姨,春花似錦、人聲如沸厌丑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽怒竿。三九已至砍鸠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間耕驰,已是汗流浹背爷辱。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人饭弓。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓巩检,卻偏偏與公主長得像,于是被迫代替她去往敵國和親示启。 傳聞我的和親對象是個殘疾皇子兢哭,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內容

  • 作者的序言 朋友們,棄療系列4出來啦夫嗓,作者還并沒有放棄迟螺,感覺自己萌萌噠,233舍咖。 語句 js程序其實就是一系列可執(zhí)...
    zhaolion閱讀 1,752評論 0 8
  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,788評論 0 38
  • 官網 中文版本 好的網站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,380評論 0 5
  • 不知何時起矩父,我對南方產生了莫名的情愫。達達樂隊有一首叫做《南方》的歌排霉,里面有一段歌詞: 我第一次戀愛在那里不知她現(xiàn)...
    目分目分目分閱讀 662評論 0 3