一個頁面分成三個部分倦畅,結構驰弄,樣式麻汰,行為。
HTML代表了頁面的結構(骨架)戚篙,CSS代表了頁面的樣式(皮膚)五鲫,JavaScript代表了頁面的行為(這種行為是被動的)。主動的行為需要一個大腦岔擂,后端作為我們的大腦替我們分析執(zhí)行數(shù)據(jù)位喂,執(zhí)行行為,我們和大腦之間的聯(lián)系AJAX(中樞神經(jīng))乱灵。
1.JavaScript是什么塑崖,它能做什么?
對頁面進行渲染痛倚,讓頁面有行為规婆。讓頁面動起來;
JavaScript簡史
JavaScript在設計之初只是為了做表單驗證的蝉稳。但是現(xiàn)如今抒蚜,JavaScript已經(jīng)成為了一門功能全面的變成語言,已經(jīng)是WEB中不可或缺的一部分耘戚,如今的JavaScript是一門既簡單又復雜的語言嗡髓,說它簡單是因為學會它,幾乎只要一個小時就可以了收津。但是如果你想要真正掌握它饿这,需要幾年的時間浊伙。
JavaScript發(fā)展
NetScape公司在1995年著手開發(fā)一種名為liveScript的腳本語言, 為了營銷目的搭上當時媒體熱炒的Java順風車蛹稍,臨時更名liveScript為JavaScript吧黄。其實JavaScript和Java沒有一點關系。JavaScript1.0獲得巨大成功唆姐。
NetScape公司趁熱打鐵繼續(xù)發(fā)布JavaScript1.1版本拗慨,使得Web獲得更高的關注,同時奠定了自己在瀏覽器界的霸主地位奉芦。
如果事情一直這樣下去那么NetScape可能依舊使我們現(xiàn)代瀏覽器的霸主赵抢,可是在1996年互聯(lián)網(wǎng)巨頭微軟公司進入瀏覽器領域,推出JScript声功,和NetScape公司開始爭奪霸主地位烦却。
最讓人擔心的問題也因此出現(xiàn)了,當時的JavaScript和JScript是完全不同的兩個版本先巴,這門語言沒有一個標準存在其爵,業(yè)內(nèi)的擔心(吐槽)日益加劇。終于伸蚯,多方聯(lián)合共同制定了一個標準摩渺,這個標準也就是ECMAScrip,ECMAScript作為各自JavaScript實現(xiàn)的基礎剂邮。雖然制定標準只花費了幾個月摇幻,但是這幾個月卻對未來20年的JavaScript發(fā)展起到了不可或缺的作用。
瀏覽器的發(fā)展經(jīng)歷了無數(shù)的坎坷挥萌,各個瀏覽器發(fā)現(xiàn)這塊巨大的蛋糕后誰都不愿放棄绰姻,于是激烈的廝殺開始了。
第一次瀏覽器大戰(zhàn):
原始時期引瀑,微軟發(fā)布了IE瀏覽器狂芋,和網(wǎng)景netSpace navigator大打出手,最后網(wǎng)景失敗憨栽,將公司賣給AOL银酗,核心團隊全部離職,第一回合徒像,微軟獲勝,netSpace昔日霸主隕落蛙讥。
但是NetScape并沒有放棄锯蛀,在1998年公開源碼并重新命名為 Mozilla,并重寫全部程序次慢,在2002年發(fā)布了第一個瀏覽器版本旁涤,firefox登場翔曲。在2004年已經(jīng)開始叫板IE瀏覽器,iE推出IE7與之抗衡劈愚,拉開了第二次瀏覽器大戰(zhàn)的序幕瞳遍。
第二次瀏覽器大戰(zhàn):
第二次瀏覽器大戰(zhàn)不再是IE和FF的兩家之爭,在現(xiàn)代瀏覽器群雄并起菌羽,同時挪威的 Opera 掠械,幾乎所有的智能手機配備的都是這個瀏覽器,擁有全世界最快V8引擎的Chrom,以及蘋果公司的Safari注祖,全部加入瀏覽器爭奪猾蒂。至今戰(zhàn)爭還在進行,但是對于瀏覽器大戰(zhàn)我們看到的結果大多是推進了瀏覽器的發(fā)展是晨,為更好的用戶體驗做出了非常積極的貢獻肚菠。
JavaScript的組成
ECMAScript 、BOM 罩缴、DOM蚊逢;
ECMAScript:這是一個標準,它規(guī)定了語法箫章、類型烙荷、語句、關鍵字炉抒、保留字奢讨、操作符、對象焰薄。(相當于法律 )
BOM(瀏覽器對象模型):可以訪問瀏覽器窗口的的瀏覽器對象模型拿诸,對瀏覽器窗口進行操作。
DOM(文檔對象模型):DOM把整個頁面映射為一個多層節(jié)點結構塞茅。HTML頁面組成都是某種類型 的節(jié)點亩码,這些節(jié)點又包含著不同類型的數(shù)據(jù)。
如何寫JavaScript程序野瘦?
script標簽使用
<script></script>
src : 外聯(lián)script 標簽(立即調(diào)用,不能在該標簽內(nèi)寫代碼)
<script>
//在標簽內(nèi)書寫內(nèi)容
</script>
<script src='javascript.js'>// 這里面不能寫任何內(nèi)容</script>
一切準備就緒描沟,讓我們從Hello Word開始吧。
document.write的使用 >>>> HelloWord >>> 原樣輸出標簽鞭光。
注釋 (一份好的代碼吏廉,要有三分之二的注釋)
單行注釋: // 要注釋的內(nèi)容。
多行注釋:/* 注釋的內(nèi)容寫在這里 */
原樣輸出標簽內(nèi)容
如果我想在頁面中打印出:<strong>標簽怎么辦惰许?
如果按照正常的打印方式進行打印席覆,毫無疑問,標簽會被瀏覽器解析汹买。當我們要打印標簽的時候要對對標簽進行轉義佩伤。
< 代表 <
> 代表 >
document.write('<strong>強大的</strong>');
變量(別稱)
他叫翠花聊倔,他是一只熊。
熊的底層是什么那生巡? 熊皮耙蔑、熊掌、熊骨....孤荣, 那我們每次呼叫這只熊的時候都要叫她什么甸陌?有一張熊皮,500公斤熊肉垃环,第三塊小腳趾骨斷過的邀层,那個玩意?
不遂庄!我們叫她翠花寥院!這就是這只熊的別稱!放在計算機里涛目,這就是把這只熊塞入了一個叫做翠花的變量里秸谢。
怎么聲明一個變量那?
關鍵字 var 變量名 a = '<strong>強壯的</strong>'
var 聲明變量的底層原理:我們所寫的程序運行在內(nèi)存中霹肝,當我們使用關鍵字var 聲明一個變量的時候估蹄,計算機會從內(nèi)存中留出一定儲存空間,為我們存放不同類型的內(nèi)容沫换。
分清左右兩側的意義:
JavaScript中的 ‘’=‘’ 和我們數(shù)學中的 ‘’ = ‘’不一樣臭蚁,在JavaScript中‘’=‘’的作用是賦值(取別稱)。
var a = '<strong></strong>'; 這句話分成兩個部分讯赏。
左值:在等號左側垮兑,是變量名(同時被賦值)
右值 :在等號右側,是存放進變量中的東西(給變量賦值)
變量的類型(因為存放進變量中的數(shù)據(jù)是放在內(nèi)存中的漱挎,計算機只識別0系枪,1,所以需要對不同類型的數(shù)據(jù)進行轉義磕谅,轉義的結果會導致所需空間不同私爷,所以JavaScript中分成很多種數(shù)據(jù)類型,以便計算機儲存時使用)
數(shù)字類型(number):1234567890
字符類型(string):'123456','字符串類型',.....(有單引號或者雙引號)
未定義類型(undefined):這是一種特殊類型膊夹,當變量被聲明但是沒有被賦值的時候衬浑,那么該變量的類型為undefined;
布爾值類型:true放刨,false嚎卫;
對象類型:object;
怎樣直觀地區(qū)分不同的數(shù)據(jù)類型那?
一個關鍵字 typeof
變量使用小技巧: 聲明一串變量:var a=1,b=2,c=3;(不推薦初學者使用這樣的變量聲明方式拓诸,因為這樣的變量聲明方式會導致注釋不明確。)
變量命名規(guī)范:(匈牙利命名法:駝峰命名法)
為什么要存在命名規(guī)范那麻昼?
你的代碼并不是只有你一個人看奠支,變量既然是別稱,那么別稱就要有特殊的含義:
舉個栗子:翠花抚芦,我們能從這個名字中得到什么信息那倍谜?
(這個名字的主人性別應該是女的,家中父母的一個美好愿景)叉抡;
我們從這些名字中能夠讀出很多的含義尔崔,是因為我們的語言常識,同樣褥民,變量也有一套類似的標準季春,代表了各種各樣的含義,這些含義如下:
第二個規(guī)則:
開頭必須為字母或者$ 或 _
想要用break作為變量可不可以那消返?
關鍵字:
這些關鍵字用于執(zhí)行特定操作等载弄。按照規(guī)則,關鍵字也是語言保留的撵颊,不能用作標識符宇攻。
保留字:未來可能作為,標識符存在倡勇。
alert()方法
alert()使用 逞刷。 停止瀏覽器加載代碼。
瀏覽器解析代碼順序妻熊。(從上到下夸浅,從左到右);
邏輯運算符:
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 =???
不同:和我們概念里的邏輯運算符很多都是不一樣的固耘。
- = == === 這些都不一樣题篷。
避免問題出現(xiàn)(一眼就看出來了):
讓計算機告訴我:typeof 關鍵字;(數(shù)據(jù)類型的檢測厅目,意義在于確認是否能夠被使用)番枚;
編程習慣:分號,雖然不加分號在JavaScript語法上沒有問題损敷,但是建議不要省略分號葫笼,加了分號之后可以用軟件壓縮。良好的變成習慣(JavaScript權威指南)上的理由拗馒。
浮點數(shù):
你的電腦做著正確的二進制浮點運算路星,但問題是你輸入的是十進制的數(shù),電腦以二進制運算,這兩者并不是總是轉化那么好的洋丐,有時候會得到正確的結果呈昔,但有時候就不那么幸運了;
alert(0.7+0.1); //輸出0.7999999999999999
類型轉換:alert(0.6+0.2); //輸出0.8友绝;
var a=3,b='10',c=true;
alert(a+b);
alert(b+c);
alert(a+c);
運算結果好像并不是我們想要的:應該怎么辦那堤尾?當我們想做數(shù)學運算的時候,應該先對所有的數(shù)據(jù)類型進行統(tǒng)一(統(tǒng)一成數(shù)字格式)迁客,這時候我們就該用到數(shù)據(jù)類型的轉換郭宝。
數(shù)據(jù)類型轉換方法:
parseInt();
parseFloat();
我們嘗試一下數(shù)據(jù)轉換的結果:
認識NaN:他是一種特殊的Number類型結果掷漱,代表意外轉換的數(shù)字粘室,NaN和任何東西都是不等的。
關于浮點數(shù):Math.round()四舍五入取整浮點數(shù)卜范。
賦值操作:(JavaScript中存在非常多的簡寫)
var a=1;
a=a+1;
a+=1;
alert(a)
這些當然還包括 -= 衔统、*=、/=先朦、%=
這些賦值操作符的結果都是什么缰冤?
一個更簡便的寫法 a++ ; a - -;
本文作者祈澈姑娘喳魏,轉載請標明作者和文章出處棉浸,創(chuàng)作不易。