JavaScript簡(jiǎn)介和基礎(chǔ)語法

????本學(xué)期又進(jìn)入到了web前端開發(fā)的學(xué)習(xí)當(dāng)中,這一次我們接觸的是JavaScript骗绕,一種原則性不那么強(qiáng)的語言,雖然它不像java語言那么的規(guī)范嚴(yán)謹(jǐn)甚至連創(chuàng)造它的人都嫌棄這門語言但就是這樣一門“毫無原則”可言的一門輕量級(jí)腳本語言在之后的web發(fā)展中起到了一個(gè)里程碑一樣的作用(個(gè)人觀點(diǎn)).
先簡(jiǎn)單的回顧一下本學(xué)期“使用JS&jQuery改善用戶體驗(yàn)”這本書前五章告訴我們的內(nèi)容:
第一章《JavaScript基本語法》
第二章《JavaScript函數(shù)和事件》
第三章《javaScript瀏覽器對(duì)象》
第四章《javaScript對(duì)象》
第五章《指導(dǎo)學(xué)習(xí):JavaScript》
還是按照流程來一章一章的進(jìn)行總結(jié).
第一章:

1.1什么是javaScript?
image.png

????這是我在百度百科上找到的解釋,用我自己的理解就是JavaScript它是一門為了給原本HTML靜態(tài)的頁面增加一些動(dòng)態(tài)效果以及對(duì)HTML和CSS的一些標(biāo)簽元素進(jìn)行動(dòng)態(tài)的操作(刪除琴昆、修改、等)從而實(shí)現(xiàn)增加用戶的交互馆揉,控制瀏覽器以及動(dòng)態(tài)創(chuàng)建頁面等功能的一種輕量級(jí)腳本語言业舍,使用JavaScript我覺得還有一個(gè)最大的兩個(gè)好處1.是能夠規(guī)范化web開發(fā)的代碼,能夠使得代碼更加的清晰升酣,配合上必要的注釋使得代碼讓人更易理解2.解決了在更早些年帶寬并不那么好的時(shí)期舷暮,表單驗(yàn)證需要非常長(zhǎng)的緩沖時(shí)間的問題JavaScript在引入后很好的改善了這樣一個(gè)問題,實(shí)現(xiàn)了不通過服務(wù)器對(duì)網(wǎng)頁進(jìn)行一些簡(jiǎn)單的表單驗(yàn)證噩茄。這在很大程度上減輕了服務(wù)器端的壓力也讓用戶能夠更加及時(shí)的獲取到反饋信息下面。

1.2 JavaScript的成長(zhǎng)史。

1995年JavaScript誕生于網(wǎng)景公司的一名程序員手中绩聘,他的名字叫做布蘭登·艾奇沥割。
image.png

而在開發(fā)初期JavaScript并不叫這個(gè)名字耗啦,最初的名字叫做LiveScript,而當(dāng)時(shí)的網(wǎng)景公司(Netscape)為了蹭一波Java的熱度臨時(shí)把LiveScript改名為JavaScript机杜,所以從本質(zhì)上來說JavaScript和Java沒什么關(guān)系帜讲。
1997年7月,ECMAScript 1.0發(fā)布椒拗。
1998年6月似将,ECMAScript 2.0版發(fā)布。
1999年12月陡叠,ECMAScript 3.0版發(fā)布玩郊,成為JavaScript的通行標(biāo)準(zhǔn),得到了廣泛支持枉阵。
2007年10月译红,ECMAScript 4.0版草案發(fā)布,對(duì)3.0版做了大幅升級(jí)兴溜,預(yù)計(jì)次年8月發(fā)布正式版本侦厚。草案發(fā)布后,由于4.0版的目標(biāo)過于激進(jìn)拙徽,各方對(duì)于是否通過這個(gè)標(biāo)準(zhǔn)媚赖,發(fā)生了嚴(yán)重分歧烈掠。以Yahoo、Microsoft、Google為首的大公司个唧,反對(duì)JavaScript的大幅升級(jí)俩檬,主張小幅改動(dòng)题画;以JavaScript創(chuàng)造者Brendan Eich為首的Mozilla公司祭隔,則堅(jiān)持當(dāng)前的草案。
2011年6月忘古,ECMAscript 5.1版發(fā)布徘禁,并且成為ISO國(guó)際標(biāo)準(zhǔn)(ISO/IEC 16262:2011)。到了2012年底髓堪,所有主要瀏覽器都支持ECMAScript 5.1版的全部功能送朱。
2013年3月,ECMAScript 6草案凍結(jié)干旁,不再添加新功能驶沼。新的功能設(shè)想將被放到ECMAScript 7。
2013年12月争群,ECMAScript 6草案發(fā)布商乎。然后是12個(gè)月的討論期,聽取各方反饋祭阀。
2015年6月鹉戚,ECMAScript 6正式發(fā)布,并且更名為“ECMAScript 2015”专控。這是因?yàn)門C39委員會(huì)計(jì)劃抹凳,以后每年發(fā)布一個(gè)ECMAScirpt的版本,下一個(gè)版本在2016年發(fā)布伦腐,稱為“ECMAScript 2016”赢底。
除了ECMAScript的版本,很長(zhǎng)一段時(shí)間中柏蘑,Netscape公司(以及繼承它的Mozilla基金會(huì))在內(nèi)部依然使用自己的版本號(hào)幸冻。這導(dǎo)致了JavaScript有自己不同于ECMAScript的版本號(hào)。1996年3月咳焚,Navigator 2.0內(nèi)置了JavaScript 1.0洽损。JavaScript 1.1版對(duì)應(yīng)ECMAScript 1.0,但是直到JavaScript 1.4版才完全兼容ECMAScript 1.0革半。JavaScript 1.5版完全兼容ECMAScript 3.0碑定。目前的JavaScript 1.8版完全兼容ECMAScript 5。

1.3 JavaScript的執(zhí)行原理

javaScript的執(zhí)行原理相比Java來說有一個(gè)很明顯的區(qū)別又官,那就是這么語言沒有編譯器延刘,也就是說它不需要被編譯,javaScript是由javascript引擎直接解釋執(zhí)行的六敬,從上至下依次讀取解析HTML或腳本代碼碘赖。

1.4 JavaScript腳本代碼

JavaScript腳本代碼作用嵌入HTML代碼中的方法有三種:
1.4.1 HTML文件混合方式
利用<script></script>這對(duì)標(biāo)簽直接嵌入在html頁面當(dāng)中例如

image.png

image.png

1.4.2 JS文件引用
在外部定義一個(gè)js文件對(duì)象:

image.png

在html代碼中引用:
image.png

效果圖:
image.png

1.4.3 HTML代碼嵌入方式

image.png


點(diǎn)擊圖中的a標(biāo)簽聯(lián)接將會(huì)跳轉(zhuǎn):
image.png

1.5JavaScript語法

image.png

1.5.1 變量
JavaScript是一種弱類型的語言,它只有四種變量類型:1.數(shù)字 number 2.字符串 String 3.布爾值 booleam 4.數(shù)組 array
1.5.2 基本數(shù)據(jù)類型
javaScript 中的基本數(shù)據(jù)類型也只有五種:1.undefined 未定義類型 2. null 空類型 3.boolean 布爾值類型 4. number 數(shù)字類型 5.String 字符串類型
1.5.3 運(yùn)算符號(hào)

類型 運(yùn)算符
算數(shù)運(yùn)算符 + - % / ++ --
賦值運(yùn)算符 = += -= *= /= %=
比較運(yùn)算符 > < = >= <= == === != !==

????JavaScript有四大類型的運(yùn)算符類型,除了這四大類之外還有三類 :位運(yùn)算符外构、條件運(yùn)算符普泡、字符串運(yùn)算符
1.5.4 控制語句
因?yàn)閖avaScript是基于java而產(chǎn)生的一門腳本語言,所以在很多方面其實(shí)都是相通的典勇,就比如在控制語句方面你會(huì)發(fā)現(xiàn)其實(shí)和java基本一模一樣劫哼。

  • while和do...while都能實(shí)現(xiàn)固定次數(shù)和不固定次數(shù)的循環(huán),但是while和do...while更適合做不固定次數(shù)的循環(huán)割笙。
  • while循環(huán)权烧,先進(jìn)行條件判斷,再做代碼的執(zhí)行伤溉。而do...while先執(zhí)行代碼般码,再做條件判斷。因此乱顾,do...while至少會(huì)執(zhí)行一次代碼
  • for循環(huán)適用于固定次數(shù)的循環(huán)板祝。
  • break和continue可以修改循環(huán)的執(zhí)行次序。
    1.5.5 函數(shù)function
    javaScript函數(shù)類似于java中的方法走净,它的函數(shù)聲明定義必須通過function關(guān)鍵字券时,具體語法如下
function name(參數(shù) 1, 參數(shù) 2, 參數(shù) 3) {
    要執(zhí)行的代碼
}//其中name即代表函數(shù)名孤里,小括號(hào)中的便是形參

1.5.6 css樣式
js可以修改HTML頁面的中的元素,對(duì)元素進(jìn)行動(dòng)態(tài)的操作橘洞,并且也可以通過節(jié)點(diǎn)或者id名class名等找到指定對(duì)像并修改其css樣式.

<html>
<body>

<p id="p2">Hello World!</p>

<script>
document.getElementById("p2").style.color = "blue";
</script>

<p>上面的段落已被腳本改變捌袜。</p>

</body>
</html>

1.5.7 事件驅(qū)動(dòng)
javaScript事件驅(qū)動(dòng)原理:當(dāng)用戶在網(wǎng)頁客戶端點(diǎn)擊一個(gè)按鈕或者點(diǎn)擊某一個(gè)文本框,在鍵盤上敲擊某一個(gè)鍵時(shí)炸枣,這些過程便我們的事件源虏等,而被我們點(diǎn)擊的按鈕,文本框适肠,或者按鍵這些具體詳細(xì)的一些信息和值便是我們所說的事件對(duì)象霍衫,與java一樣當(dāng)javaScript引擎監(jiān)聽到這些事件發(fā)生時(shí)便會(huì)調(diào)用對(duì)應(yīng)的事件處理程序.
????而javaScript事件的類型大致我分為了一下四種:

  • 鼠標(biāo)事件:
    當(dāng)用戶在頁面上用鼠標(biāo)點(diǎn)擊頁面元素時(shí),對(duì)應(yīng)的dom節(jié)點(diǎn)會(huì)觸發(fā)鼠標(biāo)事件侯养,主要有click敦跌、dblclick、mousedown沸毁、mouseout峰髓、mouseover、mouseup息尺、mousemove等携兵。
  • 鍵盤事件:
    當(dāng)用戶用鍵盤輸入信息時(shí),會(huì)觸發(fā)鍵盤操作事件搂誉。主要包括keydown徐紧、keypress、keyup三個(gè)炭懊。
  • HTML事件:
    在html節(jié)點(diǎn)加載變更等相關(guān)的事件并级,比如window的onload、unload侮腹、abort嘲碧、error,文本框select父阻、change等等愈涩。
  • 其它事件:
    頁面中一些特殊對(duì)象運(yùn)行過程中產(chǎn)生的事件,比如xml http request對(duì)象的相關(guān)事件加矛。

當(dāng)我們給網(wǎng)頁的body部門添加一個(gè)寬和高履婉,我們事先在html代碼塊中定義標(biāo)簽然后添加對(duì)應(yīng)的事件,再在js代碼塊中創(chuàng)建監(jiān)聽此事件的處理函數(shù)斟览。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>鼠標(biāo)事件</title>
    <script type="text/javascript">
        function test(e) {
            window.alert("x = "+ e.clientX + " y =" + e.clientY);
        }
    </script>
</head>
<body style="width: 1000px; height: 800px; border: 1px solid red;" onmousedown="test(event)">
    //給body添加一個(gè)寬高并添加onmousedown事件
</body>
</html>

1.5.8 表單驗(yàn)證
????在之前介紹JavaScript時(shí)毁腿,就有提到了js怎樣解決因帶寬問題,用戶不能及時(shí)接收反饋信息的這樣一個(gè)表單驗(yàn)證問題,js在用戶數(shù)據(jù)在傳送至服務(wù)端之前已烤,會(huì)通過自己的一些簡(jiǎn)單的邏輯判斷進(jìn)行先驗(yàn)證鸠窗,而這些邏輯判斷語句就與我們之前Java學(xué)習(xí)到的一樣,通過在腳本中嵌入邏輯驗(yàn)證語句來實(shí)現(xiàn)這樣一個(gè)驗(yàn)證胯究。例如我們驗(yàn)證一個(gè)Email郵箱塌鸯,我們只需要在Script代碼塊中創(chuàng)建這樣一個(gè)驗(yàn)證的函數(shù),而在HTML頁面里找到我們需要用到驗(yàn)證文本框或者按鈕給它添加一個(gè)事件監(jiān)聽并且調(diào)用我們之前的方法唐片。

<html>
<head>
<script type="text/javascript">
//在Script代碼塊中實(shí)現(xiàn)具體的代碼操作并調(diào)用
function validate_email(field,alerttxt)
{
with (field)
{
apos=value.indexOf("@")
dotpos=value.lastIndexOf(".")
if (apos<1||dotpos-apos<2) 
  {alert(alerttxt);return false}
else {return true}
}
}

function validate_form(thisform)
{
with (thisform)
{
if (validate_email(email,"Not a valid e-mail address!")==false)
  {email.focus();return false}
}
}
</script>
</head>

<body>
<form action="submitpage.htm"onsubmit="return validate_form(this);" method="post">
Email: <input type="text" name="email" size="30">
<input type="submit" value="Submit"> 
</form>
</body>

</html>
最后編輯于
?著作權(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