一色徘、JavaScript概述
1.1 JavaScript是什么?
- JavaScript主要用于HTML的頁面,嵌入在HTML的源碼中操禀。
- JavaScript是因特網(wǎng)上最流行的腳本語言褂策,它存在于全世界所有 Web 瀏覽器中,能夠增強(qiáng)用戶與 Web 站點和 Web 應(yīng)用程序之間的交互颓屑。
- JS是弱類型語言,沒有類型聲明,它的變量不必具有一個明確的類型辙培。
- JS是腳本語言,換句話說邢锯,可以用來編程的并且直接執(zhí)行源代碼的語言,就是腳本語言扬蕊。
- JS也是解釋性的語言。何為解釋性語言?是在運行的時候?qū)⒊绦蛑苯臃g成機(jī)器的語言
- JavaScript是一種基于對象(Object)和事件驅(qū)動(Event Driven)并具有安全性能的腳本語言,可廣泛用于服務(wù)器丹擎、PC尾抑、筆記本電腦歇父、平板電腦和智能手機(jī)等設(shè)備。
- HTML5的出現(xiàn)更是突出了JavaScript的重要性再愈,例如HTML5的繪圖支持榜苫、本地存儲、離線應(yīng)用翎冲、客戶端通信等垂睬,都大量使用了JavaScript。
1.2 JavaScript歷史
- 網(wǎng)景公司在上個世紀(jì)的1995年抗悍,憑借其Navigator瀏覽器驹饺,成為Web時代開啟時最著名的第一代互聯(lián)網(wǎng)公司。由于網(wǎng)景公司希望能在靜態(tài)HTML頁面上添加一些動態(tài)效果缴渊,于是叫Brendan Eich這哥們在設(shè)計出了JavaScript語言赏壹。
- 為什么起名叫JavaScript?原因是當(dāng)時Java語言非常紅火衔沼,所以網(wǎng)景公司希望借Java的名氣來推廣蝌借,但事實上JavaScript除了語法上有點像Java,其他部分基本上沒啥關(guān)系指蚁。JavaScript
JavaScript因為互聯(lián)網(wǎng)而生菩佑,緊隨著瀏覽器的出現(xiàn)而問世∧回顧它的歷史稍坯,就要從瀏覽器的歷史講起。
- 1990年底缘圈,歐洲核能研究組織(CERN)科學(xué)家Tim Berners-Lee(蒂姆 伯納斯-李),互聯(lián)網(wǎng)之父
- 1992年底袜蚕,美國國家超級電腦應(yīng)用中心(NCSA)開始開發(fā)一個獨立的瀏覽器糟把,叫做Mosaic (馬賽克) 。
- 1994年10月牲剃,NCSA的一個主要程序員MarcAndreessen(馬克 愛德森)聯(lián)合風(fēng)險投資家Jim Clark( 吉姆·克拉克)遣疯,成立了Mosaic通信公司(Mosaic Communications),不久后改名為網(wǎng)景Netscape凿傅。這家公司的方向缠犀,就是在Mosaic的基礎(chǔ)上,開發(fā)面向普通用戶的新一代的瀏覽器 Netscape Navigator聪舒。
- 1994年12月辨液,Navigator發(fā)布了1.0版,市場份額一舉超過90%箱残。
- 1995年滔迈,Netscape公司Brendan Eich開發(fā)這種網(wǎng)頁腳本語言止吁。1995年5月,Brendan Eich只用了10天燎悍,就設(shè)計完成了這種語言的第一版liveScript敬惦。它是一個大雜燴,語法有多個來源:
基本語法:借鑒C語言和Java語言谈山。
數(shù)據(jù)結(jié)構(gòu):借鑒Java語言俄删,包括將值分成原始值和對象兩大類。
函數(shù)的用法:借鑒Scheme語言和Awk語言奏路,將函數(shù)當(dāng)作第一等公民畴椰,并引入閉包。
原型繼承模型:借鑒Self語言(Smalltalk的一種變種)思劳。
正則表達(dá)式:借鑒Perl語言迅矛。
字符串和數(shù)組處理:借鑒Python語言。
- 1995年12月4日潜叛,Netscape公司與Sun公司聯(lián)合發(fā)布了JavaScript語言秽褒。
- 1996年3月,Navigator 2.0瀏覽器正式內(nèi)置了JavaScript腳本語言威兜。
- 1996年8月销斟,微軟模仿JavaScript開發(fā)了一種相近的語言,取名為JScript(JavaScript是Netscape的注冊商標(biāo)椒舵,微軟不能用)蚂踊,首先內(nèi)置于IE 3.0。Netscape公司面臨喪失瀏覽器腳本語言的主導(dǎo)權(quán)的局面笔宿。
- 1997年 IE4與nn4平分天下犁钟。網(wǎng)景公司將javaScript交給ECMA(European Computer Manufacturers Association)組織,以此來抵制微軟的壟斷泼橘。
- 1998年 ECMAScript 2.0
- 1999年 ECMAScript 3.0
- 2008年 ECMAScript4.0應(yīng)為升級太大涝动,廢棄
- 2009年 ECMASript5.0發(fā)布
- 2011年ECMAscript 5.1版發(fā)布,并且成為ISO國際標(biāo)準(zhǔn)(ISO/IEC 16262:2011)炬灭。到了2012年底醋粟,所有主要瀏覽器都支持ECMAScript 5.1版的全部功能。
- 2015年 ECMAScript6.0 改名為 ECMAScript2015
1.3 JavaScript主要特點
- 簡單性:它是基于Java基本語句和控制流之上的簡單而緊湊的設(shè)計重归,但是相比Java來說米愿,它的變量類型是采用弱類型,未采用嚴(yán)格的數(shù)據(jù)類型鼻吮。
var
- 安全性: JS不允許訪問本地硬盤育苟,不能將數(shù)據(jù)存入到服務(wù)器上,不允許對網(wǎng)絡(luò)文檔進(jìn)行修改和刪除椎木,只能通過瀏覽器實現(xiàn)信息瀏覽或動態(tài)交互宙搬,從而有效的防止數(shù)據(jù)的丟失笨腥。
- 動態(tài)性: JS可以直接對用戶或客戶輸入做出響應(yīng),無須經(jīng)過Web程序勇垛。它對用戶的響應(yīng)采用以事件驅(qū)動的方式進(jìn)行脖母,即由某種操作動作引起相應(yīng)的事件響應(yīng),如:點擊鼠標(biāo)闲孤、移動窗口谆级、選擇菜單等。
- 跨平臺性: JS依賴于瀏覽器本身讼积,與操作環(huán)境無關(guān)肥照。只要能運行瀏覽器的計算機(jī),并安裝了支持JS的瀏覽器就可以正確執(zhí)行勤众,從而實現(xiàn)了“編寫一次舆绎,走遍天下”的夢想。
facebook reactNative 用js去寫android和ios
1.4 JavaScript理論體系
JavaScript主要有三部分組成:
- ECMAScript 他是JavaScript的核心们颜,描述了該語言的語法和基本對象吕朵。
- BOM(browerobject model 瀏覽器對象模型)。 描述了與瀏覽器進(jìn)行交互的方法和接口窥突。BOM提供了獨立于內(nèi)容而與瀏覽器窗口進(jìn)行交互的對象努溃,例如可以移動,調(diào)整瀏覽器大小的window對象阻问,可以用于導(dǎo)航的location對象與history對象梧税,可以獲取瀏覽器,操作系統(tǒng)與用戶屏幕信息的navigator與screen對象称近,可以使用document作為訪問HTML文檔的入口第队,管理框架的frames對象等。
- DOM(document object model 文檔對象模型)刨秆。 通過 DOM凳谦,可以訪問所有的 HTML 元素,連同它們所包含的文本和屬性坛善,可以對其中的內(nèi)容進(jìn)行修改和刪除晾蜘,同時也可以創(chuàng)建新的元素邻眷。
1.5 JavaScript工作原理
1.6 JavaScript常用開發(fā)工具
- 記事本
- EditPlus
- Notepad++
- HBuilder ide 集成開發(fā)環(huán)境 免費 不難用
- WebStrom 用的最多 idea基礎(chǔ) 收費
- Sublime emmet
二眠屎、使用JavaScript
2.1 在HTML中使用JavaScript
1、內(nèi)部添加: 可以在HTML頁面的任何地方添加script標(biāo)簽(只要瀏覽器可以讀取到)肆饶,在標(biāo)簽內(nèi)部添加我們的JS代碼改衩。例如:
<script type="text/javascript">
//js代碼
</script>
說明:type屬性是必選屬性,用來指定腳本的類型驯镊。Type的值可選:text/javascript葫督、application/javascript竭鞍、text/vbscript、text/jscript橄镜、text/x-javascript偎快。
區(qū)別:
type="text/javascript",傳統(tǒng)的寫法洽胶,瀏覽器支持較好晒夹。
type="application/javascript",標(biāo)準(zhǔn)的寫法,但不是每種瀏覽器都支持姊氓。
type="text/x-javascript":x前綴表示這是實驗性的丐怯,不是標(biāo)準(zhǔn)的類型。
其中x就是experiment的簡寫翔横,代表實驗階段读跷。
我們以后的代碼統(tǒng)一用:type="text/javascript"
2、 鏈接外部js文件禾唁。 為了代碼的復(fù)用和方便維護(hù)效览,實際開發(fā)中會把js代碼放入單獨的文件中,然后在HTML文件中用script標(biāo)簽鏈接引入蟀俊。例如:
<script type="text/javascript" src="a.js">
//注意不要在script標(biāo)簽中再添加代碼钦铺,即使添加了代碼也不會執(zhí)行
</script>
說明:
A:src表示要鏈接的文件的地址。這個地址可以是一個文件肢预,也可以是一個url地址矛洞。
B:引入外部js文件的時候,不要再在標(biāo)簽內(nèi)添加js代碼烫映,即使添加了也不會執(zhí)行沼本。
C:雖然這個時候不再script標(biāo)簽中添加js代碼,但是也不能把script標(biāo)簽改成單標(biāo)簽锭沟。例如下面的形式是錯誤的抽兆。
<script type="text/javascript" src="a.js" /> <!-- 把script寫成這種但標(biāo)簽的方式是錯誤的 -->
3、**在HTML標(biāo)簽中: ** 作為某個元素的事件屬性值或者是超鏈接href屬性值族淮。
<a href="javascript:alert('育知同創(chuàng)歡迎你!')">點我啊</a>
<input name="btn" type="button" value="彈出消息框" onclick="javascript:alert('育知同創(chuàng)歡迎你!');"/>
2.2 JavaScript語法基本要求
- JavaScript的執(zhí)行順序:按照HTML文件中出現(xiàn)的順序依次執(zhí)行
- JavaScript嚴(yán)格區(qū)分大小寫辫红,大小寫敏感 a A p P
- JavaScript忽略空白符和換行符
- JavaScript通過\ 對代碼進(jìn)行折行操作
- JavaScript使用 ; 結(jié)束語句。分號 ; 可以省略祝辣,盡量不要省略贴妻。
- JavaScript可以使用{ }括成一個語句組,形成一個塊block
2.3 JavaScript中幾個用于調(diào)試輸出的常用API
警告框:alert(xx);
警告框經(jīng)常用于確保用戶可以得到某些信息蝙斜。
-
警告框出現(xiàn)后名惩,用戶需要點擊確定按鈕才能繼續(xù)進(jìn)行操作。
<script type="text/javascript" > alert("你好"); </script>
確認(rèn)框:confirm(xx);
- 確認(rèn)框用于使用戶可以驗證或者接受某些信息孕荠。
- 當(dāng)確認(rèn)框出現(xiàn)后娩鹉,用戶需要點擊確定或者取消按鈕才能繼續(xù)進(jìn)行操作攻谁。
- 如果用戶點擊確認(rèn),那么返回值為 true弯予。如果用戶點擊取消戚宦,那么返回值為 false。
<script type="text/javascript" >
confirm("你好");
</script>
輸入框: prompt(xx,默認(rèn)值);
- 提示框經(jīng)常用于提示用戶在進(jìn)入頁面前輸入某個值锈嫩。
- 當(dāng)提示框出現(xiàn)后阁苞,用戶需要輸入某個值,然后點擊確認(rèn)或取消按鈕才能繼續(xù)操縱祠挫。
-
如果用戶點擊確認(rèn)那槽,那么返回值為輸入的值。如果用戶點擊取消等舔,那么返回值為 null骚灸。
向控制臺輸出結(jié)果:console.log("xxx")
<script type="text/javascript" >
console.log("正在向控制臺打印數(shù)據(jù): 哈哈哈");
</script>
直接寫入到HTML頁面中
2.4 JavaScript注釋
JavaScript共提供了2中注釋:單行注釋和多行注釋。
- 單行注釋慌植。 //這里是注釋甚牲,只能寫一行
- 多行注釋。 /* 這里的注釋可以寫多行 */
三蝶柿、關(guān)鍵字和保留字
1丈钙、關(guān)鍵字: 在js中具有特殊含義的單詞。 所有的關(guān)鍵字都是小寫字母
2交汤、保留字: 現(xiàn)在 js 還沒有使用雏赦,但是留著以后擴(kuò)展用。
四芙扎、標(biāo)識符
所謂 標(biāo)識符星岗,就是指變量、函數(shù)戒洼、屬性的名字俏橘,或者函數(shù)的參數(shù)名字。
規(guī)則:
第一個字母必須是字母圈浇、下劃線(_)寥掐、美元符號($)
其他字母可以是數(shù)字、字母磷蜀、下劃線和美元符號
JavaScript是區(qū)分大小寫的召耘。即 a和A是完全兩個不同的標(biāo)示符。
不能是關(guān)鍵字和保留子蠕搜。
-
作為慣例怎茫,ECMAScript 標(biāo)識符采用駝峰大小寫格式收壕,也就是第一個字母小寫妓灌,剩下的每個單詞的首字母大寫轨蛤,
例如:
firstSecond myCar doSomethingImportant
注意:構(gòu)造函數(shù)的首字母一般使用大寫字母開頭。
1. 只用用數(shù)字虫埂、字母祥山、下劃線、$
2. 不能使用數(shù)字開頭
3. 區(qū)分大小寫
4. 不能用關(guān)鍵字
5. 駝峰命名法
五掉伏、變量
5.1 概念
JavaScript的變量用于保存值或表達(dá)式 缝呕,顧名思義,變量就是它的值是可以改變。
5.2 聲明變量
? JavaScript中變量是弱類型或者松散類型斧散,所謂松散類型是指在同一個變量中可以存儲任何類型的數(shù)據(jù)供常。換句話說,一個變量僅僅是一個占位符而已鸡捐,為了后面的代碼訪問比較方便栈暇。
? JavaScript的變量聲明統(tǒng)一用var關(guān)鍵字來聲明。例如:
var num; //聲明了一個變量箍镜,這個變量的名字叫num源祈。
5.3 給變量賦值
var num;
num = 5; //把數(shù)字5賦值給變量num。 注意:這里的 = 不是等色迂,應(yīng)該這樣讀:把5賦值給變量num香缺,不應(yīng)該讀做num等5。
5.4 聲明變量的同時進(jìn)行賦值
var num = 5; //聲明一個變量num歇僧,同時給這個變量賦值為5图张。
5.5 聲明變量的一些注意點
同一個變量,可以聲明多次诈悍,而且后面的聲明也不會讓前面已經(jīng)賦的值丟失埂淮。例如:
var num = 10;
var num; //重寫定義傅寡,沒有任何的副作用巷燥,不會導(dǎo)致前面的值丟失。
alert(num); //彈出:10
num = 20; //把變量num的值再次賦值為20谜诫,則會覆蓋原來的值慕趴。這是變量最大的特點:變
alert(num); //所以此處彈出20
可以在同一行同時聲明多個變量痪蝇,即: 使用一個var聲明多個變量,這多個變量之間用逗號(英文下 , )隔開冕房。當(dāng)然聲明的時候可以根據(jù)需要對變量進(jìn)行賦值初始化躏啰。例如:
var num1, num2, mun3 = 40, num4; //使用var關(guān)鍵字同時聲明4個變量,而且num3的值初始化為40给僵。
5.5 變量的命名規(guī)范
同前面介紹。