JavaScript基礎(chǔ)

一個(gè)頁面分成三個(gè)部分,結(jié)構(gòu),樣式,行為。

HTML代表了頁面的結(jié)構(gòu)(骨架),CSS代表了頁面的樣式(皮膚),JavaScript代表了頁面的行為(這種行為是被動(dòng)的)。主動(dòng)的行為需要一個(gè)大腦,后端作為我們的大腦替我們分析執(zhí)行數(shù)據(jù),執(zhí)行行為,我們和大腦之間的聯(lián)系A(chǔ)JAX(中樞神經(jīng))。

Paste_Image.png

1.JavaScript是什么,它能做什么?

對(duì)頁面進(jìn)行渲染,讓頁面有行為。讓頁面動(dòng)起來;

Paste_Image.png

JavaScript簡(jiǎn)史

JavaScript在設(shè)計(jì)之初只是為了做表單驗(yàn)證的。但是現(xiàn)如今,JavaScript已經(jīng)成為了一門功能全面的變成語言,已經(jīng)是WEB中不可或缺的一部分,如今的JavaScript是一門既簡(jiǎn)單又復(fù)雜的語言,說它簡(jiǎn)單是因?yàn)閷W(xué)會(huì)它,幾乎只要一個(gè)小時(shí)就可以了。但是如果你想要真正掌握它,需要幾年的時(shí)間。

JavaScript發(fā)展

NetScape公司在1995年著手開發(fā)一種名為liveScript的腳本語言, 為了營(yíng)銷目的搭上當(dāng)時(shí)媒體熱炒的Java順風(fēng)車,臨時(shí)更名liveScript為JavaScript。其實(shí)JavaScript和Java沒有一點(diǎn)關(guān)系。JavaScript1.0獲得巨大成功。

NetScape公司趁熱打鐵繼續(xù)發(fā)布JavaScript1.1版本,使得Web獲得更高的關(guān)注,同時(shí)奠定了自己在瀏覽器界的霸主地位。

如果事情一直這樣下去那么NetScape可能依舊使我們現(xiàn)代瀏覽器的霸主,可是在1996年互聯(lián)網(wǎng)巨頭微軟公司進(jìn)入瀏覽器領(lǐng)域,推出JScript,和NetScape公司開始爭(zhēng)奪霸主地位。

Paste_Image.png

最讓人擔(dān)心的問題也因此出現(xiàn)了,當(dāng)時(shí)的JavaScript和JScript是完全不同的兩個(gè)版本,這門語言沒有一個(gè)標(biāo)準(zhǔn)存在,業(yè)內(nèi)的擔(dān)心(吐槽)日益加劇。終于,多方聯(lián)合共同制定了一個(gè)標(biāo)準(zhǔn),這個(gè)標(biāo)準(zhǔn)也就是ECMAScrip,ECMAScript作為各自JavaScript實(shí)現(xiàn)的基礎(chǔ)。雖然制定標(biāo)準(zhǔn)只花費(fèi)了幾個(gè)月,但是這幾個(gè)月卻對(duì)未來20年的JavaScript發(fā)展起到了不可或缺的作用。

瀏覽器的發(fā)展經(jīng)歷了無數(shù)的坎坷,各個(gè)瀏覽器發(fā)現(xiàn)這塊巨大的蛋糕后誰都不愿放棄,于是激烈的廝殺開始了。

第一次瀏覽器大戰(zhàn):

原始時(shí)期,微軟發(fā)布了IE瀏覽器,和網(wǎng)景netSpace navigator大打出手,最后網(wǎng)景失敗,將公司賣給AOL,核心團(tuán)隊(duì)全部離職,第一回合,微軟獲勝,netSpace昔日霸主隕落。

Paste_Image.png

但是NetScape并沒有放棄,在1998年公開源碼并重新命名為 Mozilla,并重寫全部程序,在2002年發(fā)布了第一個(gè)瀏覽器版本,firefox登場(chǎng)。在2004年已經(jīng)開始叫板IE瀏覽器,iE推出IE7與之抗衡,拉開了第二次瀏覽器大戰(zhàn)的序幕。

第二次瀏覽器大戰(zhàn):

第二次瀏覽器大戰(zhàn)不再是IE和FF的兩家之爭(zhēng),在現(xiàn)代瀏覽器群雄并起,同時(shí)挪威的 Opera ,幾乎所有的智能手機(jī)配備的都是這個(gè)瀏覽器,擁有全世界最快V8引擎的Chrom,以及蘋果公司的Safari,全部加入瀏覽器爭(zhēng)奪。至今戰(zhàn)爭(zhēng)還在進(jìn)行,但是對(duì)于瀏覽器大戰(zhàn)我們看到的結(jié)果大多是推進(jìn)了瀏覽器的發(fā)展,為更好的用戶體驗(yàn)做出了非常積極的貢獻(xiàn)。

Paste_Image.png

JavaScript的組成
ECMAScript 、BOM 、DOM;

ECMAScript:這是一個(gè)標(biāo)準(zhǔn),它規(guī)定了語法、類型、語句、關(guān)鍵字、保留字、操作符、對(duì)象。(相當(dāng)于法律 )

Paste_Image.png

BOM(瀏覽器對(duì)象模型):可以訪問瀏覽器窗口的的瀏覽器對(duì)象模型,對(duì)瀏覽器窗口進(jìn)行操作。

Paste_Image.png

DOM(文檔對(duì)象模型):DOM把整個(gè)頁面映射為一個(gè)多層節(jié)點(diǎn)結(jié)構(gòu)。HTML頁面組成都是某種類型 的節(jié)點(diǎn),這些節(jié)點(diǎn)又包含著不同類型的數(shù)據(jù)。

Paste_Image.png

如何寫JavaScript程序?

script標(biāo)簽使用

<script></script> 

 src :  外聯(lián)script 標(biāo)簽(立即調(diào)用,不能在該標(biāo)簽內(nèi)寫代碼)
 
 <script>
     
      //在標(biāo)簽內(nèi)書寫內(nèi)容     
 
 </script>

 <script  src='javascript.js'>// 這里面不能寫任何內(nèi)容</script>

一切準(zhǔn)備就緒,讓我們從Hello Word開始吧。

 document.write的使用 >>>> HelloWord    >>>  原樣輸出標(biāo)簽。
 
 注釋 (一份好的代碼,要有三分之二的注釋)

 單行注釋: // 要注釋的內(nèi)容。

 多行注釋:/* 注釋的內(nèi)容寫在這里 */ 

 原樣輸出標(biāo)簽內(nèi)容

如果我想在頁面中打印出:<strong>標(biāo)簽怎么辦?

如果按照正常的打印方式進(jìn)行打印,毫無疑問,標(biāo)簽會(huì)被瀏覽器解析。當(dāng)我們要打印標(biāo)簽的時(shí)候要對(duì)對(duì)標(biāo)簽進(jìn)行轉(zhuǎn)義。

 &lt  代表 < 

 &gt 代表 >

 document.write('<strong>強(qiáng)大的</strong>');

變量(別稱)
Paste_Image.png

他叫翠花,他是一只熊。
熊的底層是什么那? 熊皮、熊掌、熊骨...., 那我們每次呼叫這只熊的時(shí)候都要叫她什么?有一張熊皮,500公斤熊肉,第三塊小腳趾骨斷過的,那個(gè)玩意?
不!我們叫她翠花!這就是這只熊的別稱!放在計(jì)算機(jī)里,這就是把這只熊塞入了一個(gè)叫做翠花的變量里。

怎么聲明一個(gè)變量那?

關(guān)鍵字 var 變量名 a = '<strong>強(qiáng)壯的</strong>'

var 聲明變量的底層原理:我們所寫的程序運(yùn)行在內(nèi)存中,當(dāng)我們使用關(guān)鍵字var 聲明一個(gè)變量的時(shí)候,計(jì)算機(jī)會(huì)從內(nèi)存中留出一定儲(chǔ)存空間,為我們存放不同類型的內(nèi)容。

分清左右兩側(cè)的意義:

 JavaScript中的 ‘’=‘’ 和我們數(shù)學(xué)中的 ‘’ = ‘’不一樣,在JavaScript中‘’=‘’的作用是賦值(取別稱)。 
   
 var a = '<strong></strong>';  這句話分成兩個(gè)部分。

 左值:在等號(hào)左側(cè),是變量名(同時(shí)被賦值)
 
 右值 :在等號(hào)右側(cè),是存放進(jìn)變量中的東西(給變量賦值)

變量的類型(因?yàn)榇娣胚M(jìn)變量中的數(shù)據(jù)是放在內(nèi)存中的,計(jì)算機(jī)只識(shí)別0,1,所以需要對(duì)不同類型的數(shù)據(jù)進(jìn)行轉(zhuǎn)義,轉(zhuǎn)義的結(jié)果會(huì)導(dǎo)致所需空間不同,所以JavaScript中分成很多種數(shù)據(jù)類型,以便計(jì)算機(jī)儲(chǔ)存時(shí)使用)

 數(shù)字類型(number):1234567890

 字符類型(string):'123456','字符串類型',.....(有單引號(hào)或者雙引號(hào))

 未定義類型(undefined):這是一種特殊類型,當(dāng)變量被聲明但是沒有被賦值的時(shí)候,那么該變量的類型為undefined;

 布爾值類型:true,false;

 對(duì)象類型:object;

怎樣直觀地區(qū)分不同的數(shù)據(jù)類型那?

 一個(gè)關(guān)鍵字 typeof
 
 變量使用小技巧: 聲明一串變量:var a=1,b=2,c=3;(不推薦初學(xué)者使用這樣的變量聲明方式,因?yàn)檫@樣的變量聲明方式會(huì)導(dǎo)致注釋不明確。)

 變量命名規(guī)范:(匈牙利命名法:駝峰命名法)

為什么要存在命名規(guī)范那?

 你的代碼并不是只有你一個(gè)人看,變量既然是別稱,那么別稱就要有特殊的含義:
 舉個(gè)栗子:翠花,我們能從這個(gè)名字中得到什么信息那?
(這個(gè)名字的主人性別應(yīng)該是女的,家中父母的一個(gè)美好愿景);

我們從這些名字中能夠讀出很多的含義,是因?yàn)槲覀兊恼Z言常識(shí),同樣,變量也有一套類似的標(biāo)準(zhǔn),代表了各種各樣的含義,這些含義如下:

Paste_Image.png

第二個(gè)規(guī)則:

開頭必須為字母或者$ 或 _

想要用break作為變量可不可以那?

關(guān)鍵字:

這些關(guān)鍵字用于執(zhí)行特定操作等。按照規(guī)則,關(guān)鍵字也是語言保留的,不能用作標(biāo)識(shí)符。

Paste_Image.png

保留字:未來可能作為,標(biāo)識(shí)符存在。

Paste_Image.png

alert()方法

alert()使用 。 停止瀏覽器加載代碼。

瀏覽器解析代碼順序。(從上到下,從左到右);

邏輯運(yùn)算符:

 var a=1,b=2;

a+b=3 

a - b=-1 

a * b=2

a / b=0.5

 a % b=1


    var  a='1', b='2';

                      a * b=2 ;

    a / b=0.5;

    a - b=-1;

    a + b =???

不同:和我們概念里的邏輯運(yùn)算符很多都是不一樣的。

  • = == === 這些都不一樣。

避免問題出現(xiàn)(一眼就看出來了):

讓計(jì)算機(jī)告訴我:typeof 關(guān)鍵字;(數(shù)據(jù)類型的檢測(cè),意義在于確認(rèn)是否能夠被使用);

編程習(xí)慣:分號(hào),雖然不加分號(hào)在JavaScript語法上沒有問題,但是建議不要省略分號(hào),加了分號(hào)之后可以用軟件壓縮。良好的變成習(xí)慣(JavaScript權(quán)威指南)上的理由。

浮點(diǎn)數(shù):

你的電腦做著正確的二進(jìn)制浮點(diǎn)運(yùn)算,但問題是你輸入的是十進(jìn)制的數(shù),電腦以二進(jìn)制運(yùn)算,這兩者并不是總是轉(zhuǎn)化那么好的,有時(shí)候會(huì)得到正確的結(jié)果,但有時(shí)候就不那么幸運(yùn)了;

alert(0.7+0.1); //輸出0.7999999999999999

類型轉(zhuǎn)換:alert(0.6+0.2); //輸出0.8;

       var a=3,b='10',c=true;

    alert(a+b);

    alert(b+c);

    alert(a+c);

運(yùn)算結(jié)果好像并不是我們想要的:應(yīng)該怎么辦那?當(dāng)我們想做數(shù)學(xué)運(yùn)算的時(shí)候,應(yīng)該先對(duì)所有的數(shù)據(jù)類型進(jìn)行統(tǒng)一(統(tǒng)一成數(shù)字格式),這時(shí)候我們就該用到數(shù)據(jù)類型的轉(zhuǎn)換。

 數(shù)據(jù)類型轉(zhuǎn)換方法:

 parseInt();

 parseFloat();

我們嘗試一下數(shù)據(jù)轉(zhuǎn)換的結(jié)果:

認(rèn)識(shí)NaN:他是一種特殊的Number類型結(jié)果,代表意外轉(zhuǎn)換的數(shù)字,NaN和任何東西都是不等的。

關(guān)于浮點(diǎn)數(shù):Math.round()四舍五入取整浮點(diǎn)數(shù)。

賦值操作:(JavaScript中存在非常多的簡(jiǎn)寫)

  var a=1;

  a=a+1;

  a+=1;

  alert(a)

這些當(dāng)然還包括 -= 、*=、/=、%=

這些賦值操作符的結(jié)果都是什么?

一個(gè)更簡(jiǎn)便的寫法 a++ ; a - -;
本文作者祈澈姑娘,轉(zhuǎn)載請(qǐng)標(biāo)明作者和文章出處,創(chuàng)作不易。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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