0043 JavaScript常見語法格式說明

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

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

前一節(jié)課,點擊按鈕事件之后,可以編輯修改網頁的內容。用途雖好,但是將代碼都擁擠在HTML內容當中,并不是一種好的格式和規(guī)范。那么該如何修改呢?
可以將JavaScript代碼從input的onclick事件轉移到head里面去。
修改testjs.html如下:

3-2-1.jpg

刷新頁面,然后點擊Click按鈕:

3-2-2.jpg

可以看到結果與之前的效果是一樣的。
這里面可以看到代碼修改了,在onclick事件里面調用的是一個函數(shù)changeContent,而在head當中的<script>標簽當中遇險定義好了changeContent函數(shù)。這就是函數(shù)的用法。

JavaScript函數(shù)定義

函數(shù)的概念,如果大家之前學習過第1章,則并不陌生。
通過將一段代碼組織在一起并用函數(shù)定義起來,就可以很方便的被使用。
通常,都是將函數(shù)定義在head里面,然后在網頁控件的事件發(fā)生時進行調用。
這樣的好處很明顯,可以將所有的JavaScript代碼組織在一起,更利于組織和調用。
JavaScript函數(shù)定義方法如下:
function 函數(shù)名(參數(shù)1,參數(shù)2...){
函數(shù)內執(zhí)行代碼;
}
函數(shù)必須以function進行定義,類似于python的def。
參數(shù)可以為0個,1個或者多個,用括號括起來,用逗號分隔。
函數(shù)體用左右花括號進行限定,花括號內部時JavaScript執(zhí)行代碼。

JavaScript代碼和網頁內容分離

和之前的CSS代碼一樣,除了可以直接寫在head的script標簽之內,JavaScript代碼用可以通過引用外部文件的方式來完成。
這樣的好處也是很明顯的,就是將網頁顯示內容和對網頁的操作代碼進行分離,更容易進行維護,也更有利于組織代碼,方便不同的網頁去引用相同的JavaScript代碼功能。
可以稱之為外部JavaScript文件,它的文件名一般都是以.js結尾。
如果需要使用外部JavaScript文件,可以通過script標簽的src屬性來引用。
唯一要注意的一點是外部JavaScript文件里面不可以包含script標簽。

下面來修改代碼,改為調用外部JavaScript文件。
新創(chuàng)建一個文件,文件名為testjs.js。將函數(shù)changeContent整體內容移動到testjs.js文件中。并將文本修改顏色改為綠色。
testjs.js代碼內容如下:

3-2-3.jpg

修改testjs.html文件內容:

3-2-4.jpg

刷新頁面,點擊Click按鈕,可以看到外部JavaScript文件起作用了。

3-2-5.jpg

document.getElementById函數(shù)

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

這里重點的關鍵語句是document.getElementById,它的作用就是用戶訪問網頁的某個元素。
它是通過網頁元素的id屬性來進行定位和訪問的。
document是一個JavaScript內部對象實例,意思就是JavaScript代碼當前所在的這個網頁的對象的實例引用。
至于什么是“對象”和“實例”的概念,如果有其他編程語言經驗的可能比較好理解,但是初學者可能不太理解。

大致解釋一下,“對象”就是一種抽象概念的集合,而“實例”就是對象抽象概念的具體化。
一個對象用于定義某一類概念的抽象意義,而實例就是滿足對象抽象概念的具體化引用。
用一個比喻來形容,“轎車”就是一個對象,它是定義某一類事物的概念,但它不能拿來直接使用。
而“一輛奔馳C180”就是“轎車”的一個實例,它是一個具體的事物,可以拿來直接使用,而且它滿足對對象的定義。
每個對象都具有一些方法可以操作,例如“轎車”可以啟動、停止、前進、后退或轉彎等方法。
那么對象的實例就可以使用這些方法進行操作。
同樣的,“一輛桑塔納2000”同樣是“轎車”的一個實例,同樣可以使用這些方法進行操作。
可以看到,針對的某個事物的概念,對象只有一個,而實例可以有無數(shù)個。
更詳細的講解這里就不深入了,大家掌握一個基本的了解就夠了。隨著今后更多的編程語言學習,會逐步掌握的。

document是Document對象的一個實例,它有一個方法是getElementById,返回值是網頁中的一個元素對象的實例。
通過對這個返回值的繼續(xù)操作,就可以改變網頁元素的內容或者樣式。
innerHTML就是指網頁元素的內容,而style就是網頁元素的style樣式屬性,而style.color就是網友元素的顏色樣式屬性。
通過賦值語句=就可以設置對應的元素內容和樣式。

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

JavaScript代碼是向瀏覽器發(fā)出指示,告訴瀏覽器應該如何執(zhí)行處理。
它是單步執(zhí)行的,通常都在每句結尾用分號結束。
執(zhí)行代碼可以是定義變量、賦值語句、判斷語句、循環(huán)語句或者調用其他函數(shù)的語句。
執(zhí)行代碼是按照順序進行執(zhí)行的,但是也可以通過分支語句和循環(huán)語句實現(xiàn)更多更復雜的邏輯。

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

可以看到,if語句和以前學習過的python語法格式不一樣。
if后面是一個用()左右括號包起來的一個邏輯判斷式,根據(jù)邏輯判斷式的結果是True還是False來執(zhí)行不同的代碼。
這一點和python也是一樣的邏輯,只是代碼規(guī)范不同而已。

JavaScript代碼是大小寫敏感的

JavaScript代碼是大小寫敏感的,這一點和第2章的html代碼是不一樣的。
來試驗一下,將getElementById修改為全部小寫的getelementbyid看看:
修改testjs.js代碼:

3-2-6.jpg

刷新頁面,點擊Click按鈕,可以看到網頁內容和樣式沒有變化,說明代碼不起作用。
那么這里有點不好判斷了,是代碼出錯了,還是什么其它原因呢。
其實可以通過之前使用過的瀏覽器調試工具來進行調試。

通過鼠標右鍵“檢查”菜單,打開瀏覽器調試工具。

3-2-7.jpg

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

空格和折行

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

3-2-8.jpg

然后刷新頁面重新執(zhí)行,可以看到網頁執(zhí)行沒有錯誤了,空格不影響代碼。

同樣的,如果一行代碼中的文本字符串過長,也可以使用折行提高可讀性。
通過在文本字符串中使用反斜杠來對代碼進行折行。
testjs.js代碼修改如下:

3-2-9.jpg

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

3-2-10.jpg

但是,如果不是文本字符串,使用反斜杠,則會出錯:
testjs.js代碼修改如下:

3-2-11.jpg

刷新網頁,可以看到控制臺顯示的錯誤。

3-2-12.jpg

JavaScript注釋

和CSS代碼一樣,可以對JavaScript代碼進行注釋,達到暫時不執(zhí)行被注釋的代碼的目的,或者是對代碼進行說明的目的。
單行注釋以//開頭,多行注釋使用/開頭,/結尾。

給代碼添加2段注釋,將錯誤代碼注釋掉,添加正確的代碼。
testjs.js代碼修改如下:

3-2-13.jpg

刷新網頁重新執(zhí)行,可以看到注釋內容不影響代碼實際執(zhí)行,網頁正常執(zhí)行了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,646評論 6 533
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,595評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,560評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,035評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,814評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,224評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,301評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,444評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 48,988評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,804評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,998評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,544評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,237評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,665評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,927評論 1 287
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,706評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,993評論 2 374

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,721評論 18 399
  • 工廠模式類似于現(xiàn)實生活中的工廠可以產生大量相似的商品,去做同樣的事情,實現(xiàn)同樣的效果;這時候需要使用工廠模式。簡單...
    舟漁行舟閱讀 7,798評論 2 17
  • 昨晚,我準備去找一朋友去蹭個飯。拿出手機選定了一個常見的朋友王博。看了看時間,他應該還沒到下班的時間,怕影響到他工...
    金艾閱讀 312評論 1 2
  • 今天和初戀見面了,讓我想起了n年前的我們,那時候還是學生,互相只是有好感,算不上真正的談戀愛,我們每天能夠一起學習...
    就現(xiàn)在1閱讀 215評論 0 0
  • 我做你的拖拉機 你自己不動 我沒油了 你就等死吧!現(xiàn)在的拖拉機父母,就這個樣子,咋辦……
    大魚Ilsa閱讀 257評論 0 0