0043 JavaScript常見語法格式說明

前一節(jié)課是體會(huì)一下JavaScript的各種用途,并寫出了HelloWorld程序。
這節(jié)課來講解JavaScript的各種語法規(guī)范和格式涎显。

將onclick事件的JavaScript代碼移到head中

前一節(jié)課,點(diǎn)擊按鈕事件之后蕊爵,可以編輯修改網(wǎng)頁的內(nèi)容著蛙。用途雖好删铃,但是將代碼都擁擠在HTML內(nèi)容當(dāng)中,并不是一種好的格式和規(guī)范踏堡。那么該如何修改呢猎唁?
可以將JavaScript代碼從input的onclick事件轉(zhuǎn)移到head里面去。
修改testjs.html如下:

3-2-1.jpg

刷新頁面顷蟆,然后點(diǎn)擊Click按鈕:

3-2-2.jpg

可以看到結(jié)果與之前的效果是一樣的诫隅。
這里面可以看到代碼修改了,在onclick事件里面調(diào)用的是一個(gè)函數(shù)changeContent帐偎,而在head當(dāng)中的<script>標(biāo)簽當(dāng)中遇險(xiǎn)定義好了changeContent函數(shù)逐纬。這就是函數(shù)的用法。

JavaScript函數(shù)定義

函數(shù)的概念削樊,如果大家之前學(xué)習(xí)過第1章豁生,則并不陌生。
通過將一段代碼組織在一起并用函數(shù)定義起來漫贞,就可以很方便的被使用甸箱。
通常,都是將函數(shù)定義在head里面迅脐,然后在網(wǎng)頁控件的事件發(fā)生時(shí)進(jìn)行調(diào)用芍殖。
這樣的好處很明顯,可以將所有的JavaScript代碼組織在一起谴蔑,更利于組織和調(diào)用豌骏。
JavaScript函數(shù)定義方法如下:
function 函數(shù)名(參數(shù)1,參數(shù)2...){
函數(shù)內(nèi)執(zhí)行代碼;
}
函數(shù)必須以function進(jìn)行定義,類似于python的def隐锭。
參數(shù)可以為0個(gè)窃躲,1個(gè)或者多個(gè),用括號(hào)括起來成榜,用逗號(hào)分隔框舔。
函數(shù)體用左右花括號(hào)進(jìn)行限定,花括號(hào)內(nèi)部時(shí)JavaScript執(zhí)行代碼赎婚。

JavaScript代碼和網(wǎng)頁內(nèi)容分離

和之前的CSS代碼一樣刘绣,除了可以直接寫在head的script標(biāo)簽之內(nèi),JavaScript代碼用可以通過引用外部文件的方式來完成挣输。
這樣的好處也是很明顯的纬凤,就是將網(wǎng)頁顯示內(nèi)容和對(duì)網(wǎng)頁的操作代碼進(jìn)行分離,更容易進(jìn)行維護(hù)撩嚼,也更有利于組織代碼停士,方便不同的網(wǎng)頁去引用相同的JavaScript代碼功能挖帘。
可以稱之為外部JavaScript文件,它的文件名一般都是以.js結(jié)尾恋技。
如果需要使用外部JavaScript文件拇舀,可以通過script標(biāo)簽的src屬性來引用。
唯一要注意的一點(diǎn)是外部JavaScript文件里面不可以包含script標(biāo)簽蜻底。

下面來修改代碼骄崩,改為調(diào)用外部JavaScript文件。
新創(chuàng)建一個(gè)文件薄辅,文件名為testjs.js要拂。將函數(shù)changeContent整體內(nèi)容移動(dòng)到testjs.js文件中。并將文本修改顏色改為綠色站楚。
testjs.js代碼內(nèi)容如下:

3-2-3.jpg

修改testjs.html文件內(nèi)容:

3-2-4.jpg

刷新頁面脱惰,點(diǎn)擊Click按鈕,可以看到外部JavaScript文件起作用了窿春。

3-2-5.jpg

document.getElementById函數(shù)

可以看到函數(shù)changeContent里面的2行代碼的:
document.getElementById('testid').innerHTML='學(xué)哥是西門吹雪';
document.getElementById('testid').style.color='green';

這里重點(diǎn)的關(guān)鍵語句是document.getElementById拉一,它的作用就是用戶訪問網(wǎng)頁的某個(gè)元素。
它是通過網(wǎng)頁元素的id屬性來進(jìn)行定位和訪問的旧乞。
document是一個(gè)JavaScript內(nèi)部對(duì)象實(shí)例舅踪,意思就是JavaScript代碼當(dāng)前所在的這個(gè)網(wǎng)頁的對(duì)象的實(shí)例引用。
至于什么是“對(duì)象”和“實(shí)例”的概念良蛮,如果有其他編程語言經(jīng)驗(yàn)的可能比較好理解,但是初學(xué)者可能不太理解悍赢。

大致解釋一下决瞳,“對(duì)象”就是一種抽象概念的集合,而“實(shí)例”就是對(duì)象抽象概念的具體化左权。
一個(gè)對(duì)象用于定義某一類概念的抽象意義皮胡,而實(shí)例就是滿足對(duì)象抽象概念的具體化引用。
用一個(gè)比喻來形容赏迟,“轎車”就是一個(gè)對(duì)象屡贺,它是定義某一類事物的概念,但它不能拿來直接使用锌杀。
而“一輛奔馳C180”就是“轎車”的一個(gè)實(shí)例甩栈,它是一個(gè)具體的事物,可以拿來直接使用糕再,而且它滿足對(duì)對(duì)象的定義量没。
每個(gè)對(duì)象都具有一些方法可以操作,例如“轎車”可以啟動(dòng)突想、停止殴蹄、前進(jìn)究抓、后退或轉(zhuǎn)彎等方法。
那么對(duì)象的實(shí)例就可以使用這些方法進(jìn)行操作袭灯。
同樣的刺下,“一輛桑塔納2000”同樣是“轎車”的一個(gè)實(shí)例,同樣可以使用這些方法進(jìn)行操作稽荧。
可以看到橘茉,針對(duì)的某個(gè)事物的概念,對(duì)象只有一個(gè)蛤克,而實(shí)例可以有無數(shù)個(gè)捺癞。
更詳細(xì)的講解這里就不深入了,大家掌握一個(gè)基本的了解就夠了构挤。隨著今后更多的編程語言學(xué)習(xí)髓介,會(huì)逐步掌握的。

document是Document對(duì)象的一個(gè)實(shí)例筋现,它有一個(gè)方法是getElementById唐础,返回值是網(wǎng)頁中的一個(gè)元素對(duì)象的實(shí)例。
通過對(duì)這個(gè)返回值的繼續(xù)操作矾飞,就可以改變網(wǎng)頁元素的內(nèi)容或者樣式一膨。
innerHTML就是指網(wǎng)頁元素的內(nèi)容,而style就是網(wǎng)頁元素的style樣式屬性洒沦,而style.color就是網(wǎng)友元素的顏色樣式屬性豹绪。
通過賦值語句=就可以設(shè)置對(duì)應(yīng)的元素內(nèi)容和樣式。

JavaScript代碼執(zhí)行規(guī)則

JavaScript代碼是向?yàn)g覽器發(fā)出指示申眼,告訴瀏覽器應(yīng)該如何執(zhí)行處理瞒津。
它是單步執(zhí)行的,通常都在每句結(jié)尾用分號(hào)結(jié)束括尸。
執(zhí)行代碼可以是定義變量巷蚪、賦值語句、判斷語句濒翻、循環(huán)語句或者調(diào)用其他函數(shù)的語句屁柏。
執(zhí)行代碼是按照順序進(jìn)行執(zhí)行的,但是也可以通過分支語句和循環(huán)語句實(shí)現(xiàn)更多更復(fù)雜的邏輯有送。

例如上節(jié)課的下列語句:
if (document.getElementById('password').value.length<6) {
alert('密碼長(zhǎng)度不能少于6位淌喻!');
} else {
alert('Check OK');
}

可以看到,if語句和以前學(xué)習(xí)過的python語法格式不一樣雀摘。
if后面是一個(gè)用()左右括號(hào)包起來的一個(gè)邏輯判斷式似嗤,根據(jù)邏輯判斷式的結(jié)果是True還是False來執(zhí)行不同的代碼。
這一點(diǎn)和python也是一樣的邏輯届宠,只是代碼規(guī)范不同而已烁落。

JavaScript代碼是大小寫敏感的

JavaScript代碼是大小寫敏感的乘粒,這一點(diǎn)和第2章的html代碼是不一樣的。
來試驗(yàn)一下伤塌,將getElementById修改為全部小寫的getelementbyid看看:
修改testjs.js代碼:

3-2-6.jpg

刷新頁面灯萍,點(diǎn)擊Click按鈕,可以看到網(wǎng)頁內(nèi)容和樣式?jīng)]有變化每聪,說明代碼不起作用旦棉。
那么這里有點(diǎn)不好判斷了,是代碼出錯(cuò)了药薯,還是什么其它原因呢绑洛。
其實(shí)可以通過之前使用過的瀏覽器調(diào)試工具來進(jìn)行調(diào)試。

通過鼠標(biāo)右鍵“檢查”菜單童本,打開瀏覽器調(diào)試工具真屯。

3-2-7.jpg

在最下方的Console窗口里面可以看到提示JavaScript代碼出錯(cuò)了,而且很明白的知道是哪一行出錯(cuò)了穷娱,出的什么錯(cuò)誤绑蔫。

空格和折行

JavaScript會(huì)忽略多余的空格,可以通過添加空格來讓代碼更有可讀性泵额。
將剛才的小寫錯(cuò)誤修改正確配深,并添加空格。
testjs.js代碼修改如下:

3-2-8.jpg

然后刷新頁面重新執(zhí)行嫁盲,可以看到網(wǎng)頁執(zhí)行沒有錯(cuò)誤了篓叶,空格不影響代碼。

同樣的羞秤,如果一行代碼中的文本字符串過長(zhǎng)澜共,也可以使用折行提高可讀性。
通過在文本字符串中使用反斜杠來對(duì)代碼進(jìn)行折行锥腻。
testjs.js代碼修改如下:

3-2-9.jpg

刷新網(wǎng)頁,可以看到網(wǎng)頁正常執(zhí)行:

3-2-10.jpg

但是母谎,如果不是文本字符串瘦黑,使用反斜杠,則會(huì)出錯(cuò):
testjs.js代碼修改如下:

3-2-11.jpg

刷新網(wǎng)頁奇唤,可以看到控制臺(tái)顯示的錯(cuò)誤幸斥。

3-2-12.jpg

JavaScript注釋

和CSS代碼一樣,可以對(duì)JavaScript代碼進(jìn)行注釋咬扇,達(dá)到暫時(shí)不執(zhí)行被注釋的代碼的目的甲葬,或者是對(duì)代碼進(jìn)行說明的目的。
單行注釋以//開頭懈贺,多行注釋使用/開頭经窖,/結(jié)尾坡垫。

給代碼添加2段注釋,將錯(cuò)誤代碼注釋掉画侣,添加正確的代碼冰悠。
testjs.js代碼修改如下:

3-2-13.jpg

刷新網(wǎng)頁重新執(zhí)行,可以看到注釋內(nèi)容不影響代碼實(shí)際執(zhí)行配乱,網(wǎng)頁正常執(zhí)行了溉卓。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市搬泥,隨后出現(xiàn)的幾起案子桑寨,更是在濱河造成了極大的恐慌,老刑警劉巖忿檩,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尉尾,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡休溶,警方通過查閱死者的電腦和手機(jī)代赁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來兽掰,“玉大人芭碍,你說我怎么就攤上這事∧蹙。” “怎么了窖壕?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)杉女。 經(jīng)常有香客問我瞻讽,道長(zhǎng),這世上最難降的妖魔是什么熏挎? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任速勇,我火速辦了婚禮,結(jié)果婚禮上坎拐,老公的妹妹穿的比我還像新娘烦磁。我一直安慰自己,他們只是感情好哼勇,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布都伪。 她就那樣靜靜地躺著,像睡著了一般积担。 火紅的嫁衣襯著肌膚如雪陨晶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天帝璧,我揣著相機(jī)與錄音先誉,去河邊找鬼湿刽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛谆膳,可吹牛的內(nèi)容都是我干的叭爱。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼漱病,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼买雾!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起杨帽,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤漓穿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后注盈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晃危,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年老客,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了僚饭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡胧砰,死狀恐怖鳍鸵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情尉间,我是刑警寧澤偿乖,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站哲嘲,受9級(jí)特大地震影響贪薪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜眠副,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一画切、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧囱怕,春花似錦霍弹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拧烦。三九已至忘闻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間恋博,已是汗流浹背齐佳。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工私恬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人炼吴。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓本鸣,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親硅蹦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子荣德,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法童芹,內(nèi)部類的語法涮瞻,繼承相關(guān)的語法,異常的語法假褪,線程的語...
    子非魚_t_閱讀 31,625評(píng)論 18 399
  • 工廠模式類似于現(xiàn)實(shí)生活中的工廠可以產(chǎn)生大量相似的商品署咽,去做同樣的事情,實(shí)現(xiàn)同樣的效果;這時(shí)候需要使用工廠模式生音。簡(jiǎn)單...
    舟漁行舟閱讀 7,752評(píng)論 2 17
  • 昨晚缀遍,我準(zhǔn)備去找一朋友去蹭個(gè)飯慕匠。拿出手機(jī)選定了一個(gè)常見的朋友王博∩桑看了看時(shí)間絮重,他應(yīng)該還沒到下班的時(shí)間,怕影響到他工...
    金艾閱讀 306評(píng)論 1 2
  • 今天和初戀見面了歹苦,讓我想起了n年前的我們青伤,那時(shí)候還是學(xué)生,互相只是有好感殴瘦,算不上真正的談戀愛狠角,我們每天能夠一起學(xué)習(xí)...
    就現(xiàn)在1閱讀 212評(píng)論 0 0
  • 我做你的拖拉機(jī) 你自己不動(dòng) 我沒油了 你就等死吧!現(xiàn)在的拖拉機(jī)父母蚪腋,就這個(gè)樣子丰歌,咋辦……
    大魚Ilsa閱讀 254評(píng)論 0 0