教程揭秘 | 動(dòng)力節(jié)點(diǎn)內(nèi)部Java零基礎(chǔ)教學(xué)文檔第四篇:HTML_CSS_JavaScript(3)
接上期后續(xù)
本期分享第四章節(jié)-JavaScript
第四章都馬上分享完了哦,大家都跟上了嗎?
跟上的我就不得不說真厲害~
沒跟上的要加油了!
但時(shí)間還久,后面要學(xué)還有很多~
大家需保持耐心慢慢來
爭(zhēng)取你們學(xué)習(xí)的速度!
跟上我更新的速度哦~?

今日新篇章
【JavaScript】?
1.?JavaScript的簡(jiǎn)介
1.1??JavaScript的誕生
在1995年前后,當(dāng)時(shí)世界上的主流帶寬為28.8Kbps,現(xiàn)在世界平均下載帶寬為21.9Mbps。當(dāng)時(shí)的網(wǎng)民,每提交一次表單,都需要等待很久才能收到服務(wù)器的回應(yīng),甚至很可能等了幾分鐘收到的卻是說缺少了某一項(xiàng)。為了改善用戶體驗(yàn),嵌入瀏覽器客戶端的能實(shí)現(xiàn)簡(jiǎn)單表單判斷的腳本誕生了,這就是JavaScript。
JavaScript最早是工作于Netscape (網(wǎng)景公司)的 Brendan Eich為即將在1995年發(fā)行的NetscapeNavigator 2.0(NN2.0)開發(fā)的,當(dāng)時(shí)叫做LiveScript。由于當(dāng)時(shí)是和非常熱門的Sun公司合作的,為了趕上當(dāng)時(shí)的潮流——Java語言,這門語言被命名為JavaScript。
1.2??JavaScript跟Java有什么關(guān)系?
這也是外行人聽到JavaScript的第一反應(yīng),也是這門語言被詬病最多的問題之一。
一開始JavaScript叫做LiveScript,但是由于當(dāng)時(shí)Java這個(gè)語言特別火,所以為了傍大牌,就改名為JavaScript。如同“北大”和“xxxx鳥”的關(guān)系?!氨贝笄帏B”就是傍“北大”大牌。
嚴(yán)格的說,沒有半毛錢關(guān)系。如果非要扯上關(guān)系,也許就是兩者的部分函數(shù)相同、面向?qū)ο笏枷搿⑴袛嘟Y(jié)構(gòu)、循環(huán)語句相同等等等等,但這些顯然不是Java的專利,而是編程語言的共識(shí)。
1.3??JavaScript的標(biāo)準(zhǔn)化及發(fā)展歷史
JavaScript推出時(shí),用戶體驗(yàn)更好的NN 瀏覽器主宰了瀏覽器市場(chǎng),而微軟一直在追趕。在推出IE3的時(shí)候,微軟發(fā)布了VBScript并以JScript為名,實(shí)際上和Netscape的JavaScript沒有多大區(qū)別(用今天的話來講就是山寨)。面對(duì)微軟的競(jìng)爭(zhēng),Netscape和Sun公司將自己的JavaScript草案提交給ECMA(歐洲計(jì)算機(jī)制造商協(xié)會(huì))對(duì)JavaScript進(jìn)行了標(biāo)準(zhǔn)化,最后形成了ECMAScript 的第一個(gè)版本(ECMA-262)。
有意思的是,網(wǎng)景公司在標(biāo)準(zhǔn)化JavaScript之后,內(nèi)部卻出現(xiàn)了問題,JavaScript的研究停滯,而微軟則趁機(jī)趕超,推出了IE4,內(nèi)置了第一個(gè)遵循ECMA規(guī)范的JavaScript引擎,比NN提前了一年。再加上微軟系統(tǒng)逐步占領(lǐng)計(jì)算機(jī)操作系統(tǒng)市場(chǎng),其預(yù)裝的IE瀏覽器市場(chǎng)份額逐漸加大,NN不斷被擠占市場(chǎng)。然而,當(dāng)微軟失去了最大的對(duì)手后,它就沒有了發(fā)展的動(dòng)力,IE6~IE8,無論是界面渲染還是腳本執(zhí)行,都互不兼容,成為瀏覽器史上的一朵奇葩,也是前端開發(fā)者的噩夢(mèng)。
1.4??今天的JavaScript
2003年之前,JavaScript被認(rèn)為“牛皮鮮”,用來制作頁面上的廣告,彈窗、漂浮的廣告。什么東西讓人煩,什么東西就是JavaScript開發(fā)的。所以瀏覽器就推出了屏蔽廣告功能。
2004年JavaScript命運(yùn)開始改變了,那一年谷歌公司,開始帶頭使用Ajax技術(shù)了,Ajax技術(shù)就是JavaScript的一個(gè)應(yīng)用。并且,那時(shí)候人們逐漸開始提升用戶體驗(yàn)了。
2007年喬布斯發(fā)布了iPhone,這一年開始,用戶就多了上網(wǎng)的途徑,就是用移動(dòng)設(shè)備上網(wǎng)。
JavaScript在移動(dòng)頁面中,也是不可或缺的。并且這一年,互聯(lián)網(wǎng)開始標(biāo)準(zhǔn)化,按照W3C規(guī)則三層分離,人們?cè)絹碓街匾旿avaScript了。
2010年的時(shí)候,人們更加了解HTML5技術(shù)了,HTML5推出了一個(gè)東西叫做Canvas(畫布),工程師可以在Canvas上進(jìn)行游戲制作,利用的就是JavaScript。
2011年,Node.js誕生,使JavaScript能夠開發(fā)服務(wù)器程序了。
1.5??JavaScript的概述
JavaScript是一種基于對(duì)象(Object)和事件驅(qū)動(dòng)(EventDriven)并具有安全性能的腳本語言,也是世界上最流行的編程語言。javascript的出現(xiàn)使得網(wǎng)頁和用戶之間實(shí)現(xiàn)了一種實(shí)時(shí)性的,動(dòng)態(tài)性的,交互性的關(guān)系,使網(wǎng)頁包含更多活躍的元素和更加精彩的內(nèi)容。同時(shí)javascript短小精悍,在客戶機(jī)上執(zhí)行,大大提高了網(wǎng)頁的瀏覽速度和交互能力。
JavaScript ,它包含了三大部分:ECMAScript、DOM、BOM
l?ECMAScript:ECMAScript是JavaScript這門語言的核心組成,是這門語言的精髓所在。包括變量定義,垃圾回收,語法,作用域等等,需要我們?nèi)ゲ粩嚆@研。
l?DOM:文檔對(duì)象模型(document object model)。我們知道標(biāo)簽的嵌套,就產(chǎn)生了父子關(guān)系,而DOM,提供了大量的API,讓我們可以輕松操作DOM樹。使用DOM,我們能動(dòng)態(tài)修改頁面內(nèi)容,調(diào)整樣式等等,這也是JS多樣化的一個(gè)體現(xiàn)。
l?BOM:瀏覽器對(duì)象模型(brower object model)。和DOM類似,只不過主體變成了瀏覽器。瀏覽器同樣提供了大量的API,其中部分對(duì)JS開放,為我們提供了操作瀏覽器窗口的方法。
1.6??JavaScript的特點(diǎn)
1.?JavaScript是一種腳本語言(腳本語言又被稱為擴(kuò)建的語言,或者動(dòng)態(tài)語言,是一種編程語言,用來控制軟件應(yīng)用程序,腳本通常以文本(如ASCII)保存,只在被調(diào)用時(shí)進(jìn)行解釋或編譯。),它采用小程序段的方式實(shí)現(xiàn)編程。像其它腳本語言一樣,JavaScript同樣已是一種解釋性語言,它提供了一個(gè)易的開發(fā)過程。
2.?JavaScript是一種基于對(duì)象的語言,同時(shí)以可以看作一種面向?qū)ο蟮摹_@意味著它能運(yùn)用自己已經(jīng)創(chuàng)建的對(duì)象。因此,許多功能可以來自于腳本環(huán)境中對(duì)象的方法與腳本的相互作用。這是我們?cè)诿嫦驅(qū)ο缶幊讨蟹浅O矚g看見的!
3.?簡(jiǎn)單性:首先它是一種基于Java基本語句和控制流之上的簡(jiǎn)單而緊湊的設(shè)計(jì),從而對(duì)于學(xué)習(xí)Java是一種非常好的過渡。其次它的變量類型是采用弱類型(代碼結(jié)束后可以不用寫分號(hào),區(qū)分大小寫,只有var一種數(shù)據(jù)類型),并未使用嚴(yán)格的數(shù)據(jù)類型。??int i = 10; ?var i = 10; ?boolean flag = true; var flag = true
4.?安全性:它不允許訪問本地的硬盤,并不能將數(shù)據(jù)存入到服務(wù)器上,不允許對(duì)網(wǎng)絡(luò)文檔進(jìn)行修改和刪除,只能通過瀏覽器實(shí)現(xiàn)信息瀏覽或動(dòng)態(tài)交互。從而有效地防止數(shù)據(jù)的丟失。(這點(diǎn)體會(huì)還不深)
5.?動(dòng)態(tài)性:javascript可以直接對(duì)用戶或者客戶輸入做出響應(yīng),無須經(jīng)過Web服務(wù)程序。他對(duì)用戶的反映響應(yīng),是采用以事件驅(qū)動(dòng)的方式進(jìn)行的。也就是當(dāng)我們按下鼠標(biāo),移動(dòng)窗口,采擇菜單等事件發(fā)生時(shí)響應(yīng)的。
6.?跨平臺(tái)性:Javascript是依賴瀏覽器本身,與操作環(huán)境無關(guān),只要能運(yùn)行瀏覽的計(jì)算機(jī),并支持javascript的瀏覽器就可以正確執(zhí)行。
2.?第一個(gè)程序
2.1??程序的書寫位置
HTML 中的腳本必須位于<script>?與</script>?標(biāo)簽之間。
腳本可被放置在 HTML 頁面的?<body>?或?<head>?中。
【示例】:把script標(biāo)簽放在head中
那些老舊的實(shí)例可能會(huì)在?<script>?標(biāo)簽中使用?type="text/javascript"?,F(xiàn)在已經(jīng)不必這樣做了。JavaScript 是所有現(xiàn)代瀏覽器以及 HTML5 中的默認(rèn)腳本語言。
注意:一個(gè)文檔中可以書寫多組script標(biāo)簽。
2.2??javaScript注釋
程序中,為了便于理解、教學(xué),我們可以寫一些給人看的東西,這些內(nèi)容就是注釋,程序不會(huì)運(yùn)行。
注意:使用多行注釋的時(shí)候,切記不要相互嵌套。
在WebStorm中,單行注釋的快捷鍵為:Ctrl+/,多行注釋的快捷鍵為:Ctrl+shift+/
2.3??JavaScript輸出
2.3.1??控制臺(tái)輸出
console.log控制臺(tái)輸出
<script>
????console.log("Hello World!");
</script>
2.3.2??寫入文檔
通過JS動(dòng)態(tài)的的寫入文檔
2.4??引用外部JavaScript
外部引用就是引用HTML文件外部的JavaScript文件,這種方式可以使代碼更清晰,更容易擴(kuò)展。
我們可以通過HTML的script標(biāo)簽中的src屬性來加載外部的JavaScript文件。
src:指向的是外部JavaScript文件,注意JavaScript文件必須使用js為文件后綴。
如果通過script標(biāo)簽中的src屬性來引入外部的JavaScript文件,那么標(biāo)簽<script></script>之間不能添加代碼塊。
注意:一個(gè)文檔中可以包含多組script標(biāo)簽,代碼的執(zhí)行是由上到下順序執(zhí)行的。
3.?variable變量
3.1??聲明變量
l?變量名必須以字母(包含大小寫字母)、下劃線(_)、$和數(shù)字組成,變量不能以數(shù)字開頭;
l?不能使用JavaScript中的關(guān)鍵字作為變量名(var、true等);?
l?JavaScript變量名是嚴(yán)格區(qū)分大小寫的;??wangErMaZi
l?變量命名使用“小駝峰”命名法則,第一個(gè)單詞首字母小寫,第二個(gè)單詞起首字母大寫,例如userName。
我們可以在一條語句中聲明很多變量。該語句以var開頭,并使用逗號(hào)分隔變量即可:
<script>
????var age, name;
var age =20,name=”李四”;
</script>
3.2??變量賦值
我們可以先聲明一個(gè)變量,然后再對(duì)這個(gè)變量賦值。
也可以聲明和賦值合在一起寫, 建議寫法
3.3??變量類型
Java語言屬于強(qiáng)類型語言,在強(qiáng)類型語言中,定義變量必須明確變量的數(shù)據(jù)類型,變量創(chuàng)建成功之后類型就不能改變啦,例如:
JavaScript屬于弱類型語言,定義變量的時(shí)候,我們只需要使用var關(guān)鍵字修飾即可。變量的類型由賦值的數(shù)據(jù)決定,我們可以通過 “typeof 變量名”或“typeof(變量名)”來查看變量的類型。
4.?數(shù)據(jù)類型
JavaScript中的數(shù)據(jù)類型分為基本數(shù)據(jù)類型和引用數(shù)據(jù)類型。
基本數(shù)據(jù)類型: number、boolean、undefined、null、string
引用數(shù)據(jù)類型: Object(Array, Function, Object, Date等),后續(xù)再講。
4.1??基本數(shù)據(jù)類型
4.1.1??number類型
Number類型,即數(shù)值類型, 包含:整數(shù)型、浮點(diǎn)型、NaN(not a number)和Infinity(正負(fù)無窮大)
定義一個(gè)整型:
定義一個(gè)浮點(diǎn)型:
注意:因?yàn)樾?shù)的存儲(chǔ)特點(diǎn),兩個(gè)小數(shù)做運(yùn)算,得到的結(jié)果未必精確。
+-Infinity正無窮大和負(fù)無窮大
注意:在java語言中,如果分母為零,則直接拋出算數(shù)異常。
NaN全稱: NOT A NUMBER。
我們可以通過isNaN()函數(shù)來判斷某個(gè)變量是否為NaN,例如:如果value是NaN,則isNaN(value)返回的結(jié)果是true;如果value不是NaN,則isNaN(value)返回的結(jié)果是false。
4.1.2??boolean類型
boolean: 布爾類型,布爾類型只有兩個(gè)值:true?和?false
true: 表示為真或條件成立
false: 表示為假或條件不成立
boolean類型常用于條件判斷中,如果條件成立,則返回true;條件不成立,則返回false。
4.1.3??undefined類型
undefined類型只有一個(gè)值,就是undefined
表示只聲明但未賦值的變量。
4.1.4??string類型
string類型就是字符串,在JavaScript語言中,使用單引號(hào)或雙引號(hào)包裹的內(nèi)容,我們都稱之為字符串。
字符串簡(jiǎn)單使用:字符串的拼接,可以用“+”來做拼接。
4.1.5??null類型
null類型只有一個(gè)值,就是null,從邏輯角度看,null值表示一個(gè)空對(duì)象指針。
因?yàn)閚ull表示的是一個(gè)空對(duì)象的指針,所以使用typeof操作符檢測(cè)null會(huì)返回object的原因。
本質(zhì)上這是一個(gè)bug,因?yàn)楫?dāng)初設(shè)計(jì)JavaScript這門語言的時(shí)候比較倉促,后來發(fā)現(xiàn)的時(shí)候已經(jīng)好多開發(fā)者在使用了,如果修改這個(gè)bug對(duì)原有項(xiàng)目的代碼改動(dòng)極大,所以就只能將錯(cuò)就錯(cuò)了。
4.2??數(shù)據(jù)類型轉(zhuǎn)換
4.2.1??1.強(qiáng)制類型轉(zhuǎn)換
JS中常見的3種強(qiáng)制類型轉(zhuǎn)換??
Number(value)——把給定的值轉(zhuǎn)換成數(shù)字(可以是整數(shù)或浮點(diǎn)數(shù))
Boolean(value)——把給定的值轉(zhuǎn)換成Boolean型
String(value)——把給定的值轉(zhuǎn)換成字符串
4.2.1.1??Number(value)
Number(value)——把給定的值轉(zhuǎn)換成數(shù)字(可以是整數(shù)或浮點(diǎn)數(shù)),它轉(zhuǎn)換的是整個(gè)值,而不是部分值。
4.2.1.2??Boolean(value)
Boolean(value)——把給定的值轉(zhuǎn)換成Boolean型。
?
當(dāng)value其值為 0、-0、null、""、false、undefined 或 NaN 時(shí),那么Boolean()轉(zhuǎn)換成Boolean類型的值為 false。
4.2.1.3??String(value)
String(value)——把給定的值轉(zhuǎn)換成字符串
4.2.2??隱式類型轉(zhuǎn)換
我們知道:number類型和number類型可以相加,作為數(shù)字類型的加法運(yùn)算; string類型也可以和string類型相加,相當(dāng)于拼接字符串。
那么不同的數(shù)據(jù)類型可以相加嗎? 比如string類型和number類型?
因?yàn)镴avaScript的數(shù)據(jù)類型是非常弱的,在使用算術(shù)運(yùn)算的時(shí)候,JS的引擎在運(yùn)算之前把number類型悄悄的進(jìn)行了隱式轉(zhuǎn)換,把number類型隱式轉(zhuǎn)換為string類型,然后做了string類型與string類型的拼接。
通過上面的代碼輸出結(jié)果我們發(fā)現(xiàn),隱式轉(zhuǎn)化其實(shí)也是按照我們前一節(jié)強(qiáng)制轉(zhuǎn)換的規(guī)則來轉(zhuǎn)換的,在我們今后的JavaScript學(xué)習(xí)過程中,會(huì)經(jīng)常的遇到隱式類型的轉(zhuǎn)換,所以大家一定要記住強(qiáng)制轉(zhuǎn)換之間的規(guī)則,尤其是Boolean()的隱式轉(zhuǎn)換。
總結(jié): “+”既可以表示字符串連接,又可以表示算術(shù)加,這取決于它的操作數(shù),如果有一個(gè)為字符串的,那么就是字符串連接了。
此外,隱士轉(zhuǎn)換在if邏輯分支語句中也是用非常多。
例如:判斷一個(gè)對(duì)象是否存在
?思考: 以下代碼輸出值為? 值的類型為?
?
通過隱式轉(zhuǎn)換,把string轉(zhuǎn)化為number
通過隱式轉(zhuǎn)換,把number轉(zhuǎn)化為string
?
4.2.3??parseInt和parseFloat函數(shù)
4.2.3.1??parseInt函數(shù)
parseInt() 函數(shù)可解析一個(gè)字符串,并返回一個(gè)整數(shù)。
?
總結(jié):如果參數(shù)第一個(gè)字符不是數(shù)字,返回NaN;如果參數(shù)第一個(gè)字符是數(shù)字,則返回前面找到的所有的數(shù)字字符。
?
注意: 開頭和結(jié)尾的空格是允許的。
4.2.3.2??parseFloat函數(shù)
parseFloat() 函數(shù)可解析一個(gè)字符串,并返回一個(gè)浮點(diǎn)數(shù)。
?總結(jié):如果參數(shù)的第一個(gè)字符不是數(shù)字,則返回NaN;如果參數(shù)的第一個(gè)字符是數(shù)字,則返回前面找到的所有的數(shù)字字符(包含小數(shù))。
?
注意:開頭和結(jié)尾的空格是允許的。
5.?彈出框
5.1??彈出框的分類
警告框 ????alert, 常用。
詢問框 ????prompt返回提示框中的值。類型為string
確認(rèn)框 ????confirm返回true/false???。
5.2??alert警告框
alert(message)的作用是彈出一個(gè)提示框或者警告框,純提示作用
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?參數(shù)? ? ? ? ? ? ? ? ? ??描述
message? ? ? ? ? ? ? ? ? ? ??在window上彈出的對(duì)話框中顯示的純文本
示例代碼
5.3??prompt詢問框
prompt(message)的作用是彈出一個(gè)詢問框,可以讓用戶輸入一個(gè)值。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 參數(shù)? ? ? ? ? ? ? ? ? ? ? ?? ?? ?描述
message? ? ? ? ? ? ? ? ? ? ?輸入文字的提示信息
示例代碼
?
因?yàn)閜rompt是window對(duì)象的函數(shù),也可以通過window.alert()來調(diào)用。
5.4??confirm確認(rèn)框
confirm(message)的作用是彈出一個(gè)提示框或者警告框,純提示作用。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 參數(shù)? ? ? ? ? ? ? ? ? ? ??? ? ? ??描述
message? ? ? ? ? ? ? ? ? ? ??確認(rèn)的提示信息
示例代碼
6.?表達(dá)式與運(yùn)算符
6.1??運(yùn)算符的分類
1,算術(shù)運(yùn)算符(+ - * ?/ ??% ??++ ???--)
2,賦值運(yùn)算符(= ?+= ?*= ??/= ??%=)
3,條件運(yùn)算符(=== ??== ??> ??>= ??< ??<= ?!= ?)
4,字符串運(yùn)算符(+ ??+=)
5,邏輯運(yùn)算符(&& ?|| ?!)
6,三元運(yùn)算符( ??(條件表達(dá)式1)?表達(dá)式2:表達(dá)式3 ????)
7,運(yùn)算符優(yōu)先級(jí)
6.2??賦值運(yùn)算符
= 把右邊的值賦值給左邊。
6.3??算術(shù)運(yùn)算符
6.3.1?2.1 二元運(yùn)算符
加減乘除
?
取余,返回兩個(gè)數(shù)相除之后的余數(shù)
【課堂練習(xí)】
獲取一個(gè)三位數(shù)的整數(shù)的個(gè)位、十位和百位
6.3.2?2.2 一元運(yùn)算符
++ 自增運(yùn)算符。如num++和++num,都等價(jià)于num = num + 1
num++和++num的區(qū)別
++num 先自增,后參與運(yùn)算
num++ 先參與運(yùn)算,后自增
-- 自減運(yùn)算符。如num--和--num,都等價(jià)于num = num - 1
num--和--num的區(qū)別
--num 先自減,后參加運(yùn)算
num-- 先參與運(yùn)算,后自減
注意:5++或++5是錯(cuò)誤的,想想這是為什么呢?
【課堂練習(xí)】
var a = 3, b = 4; 求a++ / 3 + --b * 2 - a-- % 6 + b++ * 3 - ++b的值
6.4??賦值運(yùn)算符
賦值運(yùn)算符相對(duì)于比較簡(jiǎn)單,此處就不做過多的講解。
只需要注意一點(diǎn):
6.5??比較運(yùn)算符
比較運(yùn)算符常用在邏輯語句中使用,以測(cè)定變量或值是否相等。
比較運(yùn)算返回一個(gè)boolean類型的值,滿足條件返回true, 否則返回false。
6.5.1??等于(==)
== 只比較內(nèi)容,不比較類型。只要內(nèi)容的值相同,返回true,否則返回false。
6.5.2??全等于(===)
=== 既要比較內(nèi)容,還要比較類型。只有內(nèi)容和類型都相同才返回true,否則返回false
注意:"="是賦值運(yùn)算符,"=="或“===”才是比較兩個(gè)內(nèi)容是否相等
6.5.3??不等于(!=)
!= 只比較內(nèi)容,不比較類型。
6.5.4??不全等于(!==)
!== 既要比較內(nèi)容,還要比較類型。
6.6??邏輯運(yùn)算符
6.6.1??&&(邏輯與)
&&(邏輯與) 表示“而且”的意思,屬于短路運(yùn)算。
6.6.1.1??當(dāng)值為boolean類型時(shí)
判斷第一個(gè)參數(shù), 如果第一個(gè)參數(shù)為true, 則直接返回第二個(gè)數(shù)。
<script>
????console.log(true && true); ???// 輸出: true
????console.log(true && false); ??// 輸出: false
</script>
判斷第一個(gè)參數(shù), 如果第一個(gè)參數(shù)為false, 則直接返回第一個(gè)數(shù)。
總結(jié): 邏輯與對(duì)于布爾值,只要有一個(gè)false,就返回false。
判斷第一個(gè)參數(shù), 如果第一個(gè)參數(shù)為true,,則直接返回第二個(gè)數(shù)。
判斷第一個(gè)參數(shù), 如果第一個(gè)參數(shù)為false,,則直接返回第一個(gè)數(shù)。
6.6.1.2??當(dāng)值為非boolean類型時(shí)
先判斷第一個(gè)數(shù), 如果第一個(gè)數(shù)為true, 則返回第二個(gè)數(shù); 如果第一個(gè)參數(shù)為flase, 則直接返回第一個(gè)數(shù)。
注意: 值是否為true或false,是根據(jù)數(shù)值的隱式boolean轉(zhuǎn)換而來的。
【隨堂練習(xí)】
1、判斷一個(gè)數(shù)是否在4(包含)~6(不包含)之間;
6.6.2??||(邏輯或)
||(邏輯或) 表示“或者”的意思,屬于短路運(yùn)算。
6.6.2.1??當(dāng)值為boolean類型時(shí)
判斷第一個(gè)參數(shù), 如果第一個(gè)參數(shù)為true,則直接返回第一個(gè)數(shù)
判斷第一個(gè)參數(shù), 如果第一個(gè)參數(shù)為false,則直接返回第二個(gè)數(shù)
總結(jié): 邏輯或?qū)τ诓紶栔?,只要有一個(gè)為true, 就返回true
判斷第一個(gè)參數(shù), 如果第一個(gè)參數(shù)為true,則直接返回第一個(gè)數(shù)
判斷第一個(gè)參數(shù), 如果第一個(gè)參數(shù)為false,則直接返回第二個(gè)數(shù)
6.6.2.2??當(dāng)值為非boolean類型時(shí)
先判斷第一個(gè)數(shù), 如果第一個(gè)數(shù)為true, 則返回第一個(gè)數(shù); 如果第一個(gè)參數(shù)為flase, 則直接返回第二個(gè)數(shù)。
注意: 值是否為true或false,是根據(jù)數(shù)值的隱式boolean轉(zhuǎn)換而來的。
【隨堂練習(xí)】
1、判斷一個(gè)數(shù)是否在4(包含)~6(包含)之外;
6.6.3??!(邏輯非)
!(邏輯非) 表示取反的意思
6.6.3.1??當(dāng)值為boolean類型時(shí)
<script>
????console.log(!true); ???// 輸出: false
????console.log(!false); ??// 輸出: true
</script>
6.6.3.2??當(dāng)值為非boolean類型時(shí)
6.7??三目運(yùn)算
三目運(yùn)算語法:
條件表達(dá)式 ? 滿足條件執(zhí)行 : 不滿足條件執(zhí)行
找出兩個(gè)數(shù)中的最大值
6.8??操作符優(yōu)先級(jí)

7.?選擇結(jié)構(gòu)
7.1??if語句
if…else語句完成了程序流程中的分支功能,如果其中的條件成立,則程序執(zhí)行相應(yīng)的語句。
if…else語句的語法如下:
7.2??switch語句
分支語句switch可以根據(jù)一個(gè)變量的不同取值而采取不同的處理方法,在程序設(shè)計(jì)中提供不同的分支,這樣的語句叫做分支語句。
Switch語句的語法如下:
switch (expression){
case const1:
語句塊1
case ?const1:
語句塊2
……
default:
語句塊N
}
在同時(shí)可以使用switch和if時(shí)推薦使用switch以獲得更好的效率
8.?循環(huán)結(jié)構(gòu)
8.1??for循環(huán)
for (初始化部分;條件部分;更新部分){
? ? 語句塊…?
}
?for (var i=0;i<=10;i++) {
?????alert(i);
}
8.2??while循環(huán)
while(條件) {
語句塊;
?}
var i=0;
while(i<=10){
???alert(i);
???i++;
}
8.3??do-while
do{
語句塊;
?}while(條件)
var i=0;
do{
????alert(i);
????i++;
}while(i<=20);
break語句是結(jié)束當(dāng)前的循環(huán),并把程序的控制權(quán)交給循環(huán)的下一條語句。
這里是結(jié)束循環(huán),循環(huán)到此為止?
continue語句是結(jié)束當(dāng)前的某一次循環(huán),但是并沒有跳出整個(gè)的循環(huán)。
這里是結(jié)束一次循環(huán),整個(gè)循環(huán)還在進(jìn)行
9.?字符串
string字符串是用來存儲(chǔ)一系列的字符的集合, 用于存儲(chǔ)和處理文本,在js中屬于基本數(shù)據(jù)類型中的一種。
9.1??字符串的創(chuàng)建
通過字面量來創(chuàng)建字符串
var str1 = "hello world!";
var str2 = 'hello world!';
console.log(str1); ?// 輸出:"hello world!"
console.log(str2); ?// 輸出:"hello world!"
注意:可以用雙引號(hào),也可以用單引號(hào)。
通過new String()的方式創(chuàng)建字符串
var str3 = new String("hello powernode");
console.log(str3); ?????// 輸出:"hello powernode"
9.2??字符串常用的屬性
獲取字符串的長(zhǎng)度
var str1 = "hello world!";
console.log(str1.length);
9.3??字符串常用的方法
9.3.1??獲取指定索引的字符
string.charAt(n), n取值從0開始, 取值范圍為0~length-1, 超出范圍返回空字符串。
var str = "你好,武漢!";
console.log(str.charAt(1)); ????// 輸出:"好"
console.log(str.charAt(100)); ??// 輸出:""
9.3.2??字符串截取
9.3.2.1??subStr字符串截取?substring
string.subStr(start, [length])
start: 截取字符串的起始位置 (包含起始位)
length:【可選】截取字符串的長(zhǎng)度,不設(shè)置長(zhǎng)度默認(rèn)字符串的截取從開始到結(jié)束
返回值:成功返回返回指定位置的字符串, 失敗返回空字符串
9.3.2.2??slice字符串截取
string.slice(start, [end])
start: 截取字符串的起始位置(包含起始位置)
end:【可選】截取字符串的截止位置(不包含結(jié)束位置),不設(shè)置結(jié)束位置默認(rèn)字符串的截取從開始到結(jié)束
返回值:成功返回返回指定位置的字符串, 失敗返回空字符串
9.3.3??大小寫字母轉(zhuǎn)換
9.3.3.1??toLocaleUpperCase()
var str = "hello world!";
console.log(str.toLocaleUpperCase()); ????????// 輸出:"HELLO WORLD!"
9.3.3.2??toLocaleLowerCase()
var str = "HELLO WORLD!";
console.log(str.toLocaleLowerCase()); ????????// 輸出:"hello world!"
9.3.4??字符串轉(zhuǎn)化為數(shù)組
string.split(value), 根據(jù)value來把字符串轉(zhuǎn)化為數(shù)組
9.3.5??字符串編碼解碼
為什么要對(duì)字符串進(jìn)行編碼和解碼?
只有字母和數(shù)字[0-9a-zA-Z]、一些特殊符號(hào)“$-_.+!*'(),”[不包括雙引號(hào)]、以及某些保留字,才可以不經(jīng)過編碼直接用于URL。如果網(wǎng)址路徑中包含漢字,那么就需要對(duì)中文的字符進(jìn)行編碼
9.3.5.1??編碼
encodeURIComponent()返回編碼為有效的統(tǒng)一資源標(biāo)識(shí)符 (URI) 的字符串
var url = "http://www.baidu.com/login?username=德瑪&password=不告訴你";
var encodeURL = encodeURIComponent(url);
返回值:
http%3A%2F%2Fwww.baidu.com%2Flogin%3Fusername%3D%E5%AE%89%E5%BE%B7%26password%3D%E4%B8%8D%E5%91%8A%E8%AF%89%E4%BD%A0
9.3.5.2??解碼
解碼跟編碼一致,把編碼好的字符轉(zhuǎn)化為編碼前
console.log(decodeURIComponent(encodeURL));
返回值:
http://www.baidu.com/login?username=安德&password=不告訴你
console.log("encodeURI: ??"+encodeURI(s4));
????????console.log("decodeURI: ??"+decodeURI("http://wwww.baidu.com?txt=java%E7%AE%80%E5%8D%95%E5%90%97"));
//將其他普通字符串編碼與解碼
????????var s5 = "哈哈,你是王二麻子";
????????console.log("escape: "+escape(s5));
????????console.log("unescape: ?"+ unescape("%u54C8%u54C8%uFF0C%u4F60%u662F%u738B%u4E8C%u9EBB%u5B50"));
?
9.3.6??特殊字符處理
如何表示以下字符串呢?
"恩格斯說過:"一個(gè)民族要想站在科學(xué)的高峰,就一刻也不能沒有理論思維。""
在 JavaScript 中,字符串使用單引號(hào)或者雙引號(hào)來起始或者結(jié)束。
那么以上的字符串將被截為多個(gè)字符串, 要解決這個(gè)問題那么此處就需要用到轉(zhuǎn)義符了。
在JavaScript 中我們可以使用反斜杠來向文本字符串添加特殊字符。
下面的表格列出了其余的特殊字符,這些特殊字符都可以使用反斜杠來添加到文本字符串中:
代碼? ? ? ? ? ? ? ? ??輸出
\'? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'
\"? ? ? ?? ? ? ? ?? ? ? ? ? ? ??"
\ \? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\
\n? ? ? ? ? ? ? ? ? ? ??換行符
\t? ? ? ? ? ? ? ? ? ??制表符
9.3.6.1??常見的轉(zhuǎn)義字符
var str = "恩格斯說過:\"一個(gè)民族要想站在科學(xué)的高峰,就一刻也不能沒有理論思維。\"";
輸出單引號(hào)
console.log('好好\'學(xué)習(xí)'); ???// 輸出:好好'學(xué)習(xí)
輸出反斜杠
console.log("好好\\學(xué)習(xí)\\"); ?// 輸出:好好\學(xué)習(xí)\
9.3.6.2??轉(zhuǎn)義符"\"的妙用
假如我們需要以下的字符串,我們?cè)撛趺从米址ケ硎灸兀?/span>
常規(guī)的解決方式:
以上方式太麻煩, 我們也可以這樣來實(shí)現(xiàn)
10.?數(shù)組
在程序語言中數(shù)組的重要性不言而喻,JavaScript中數(shù)組也是最常使用的對(duì)象之一,數(shù)組是一個(gè)有序集合,由于弱類型的原因,JavaScript中數(shù)組十分靈活、強(qiáng)大,不像是Java等強(qiáng)類型高級(jí)語言數(shù)組只能存放同一類型或其子類型元素,JavaScript在同一個(gè)數(shù)組中可以存放多種類型的元素,而且是長(zhǎng)度也是可以動(dòng)態(tài)調(diào)整的,可以隨著數(shù)據(jù)增加或減少自動(dòng)對(duì)數(shù)組長(zhǎng)度做更改。
10.1??數(shù)組的創(chuàng)建
通過字面量來創(chuàng)建數(shù)組
通過構(gòu)造函數(shù)來創(chuàng)建數(shù)組
10.2??數(shù)組常用屬性
獲取數(shù)組長(zhǎng)度
var arr = [1, 2, 3, 4, 5, 6];
console.log(arr.length); ??// 輸出: 6
如果手動(dòng)設(shè)置數(shù)組的length屬性值, 當(dāng)設(shè)置的值小于數(shù)組的長(zhǎng)度的時(shí)候,數(shù)組會(huì)自動(dòng)刪除超出length長(zhǎng)度的元素
如果把length設(shè)置為大于數(shù)組本身長(zhǎng)度的時(shí)候,數(shù)組也會(huì)自動(dòng)擴(kuò)張,但是并不會(huì)為數(shù)組添加新元素,只是在尾部追加空空間
10.3??簡(jiǎn)單操作數(shù)組
10.3.1??通過索引訪問數(shù)組元素
索引index的取值范圍為0到length-1之間, 訪問index不存在的元素的時(shí)候返回undefined
10.3.2??通過索引添加數(shù)組元素
10.3.3??通過索引修改數(shù)組元素
10.4??數(shù)組遍歷
10.5??數(shù)組常用方法
10.5.1??數(shù)組元素的添加
添加一個(gè)或多個(gè)元素到數(shù)組末尾位置, 并返回?cái)?shù)組的長(zhǎng)度
添加一個(gè)或多個(gè)元素到數(shù)組開始位置, 并返回?cái)?shù)組的長(zhǎng)度
10.5.2??數(shù)組元素的刪除
刪除最后一個(gè)元素, 并返回被刪除的元素的值
刪除第一個(gè)元素,并返回被刪除元素的值
10.5.3??Splice
從數(shù)組中添加/刪除項(xiàng)目,然后返回被刪除的項(xiàng)目(如果有的話), 注意該方法會(huì)改變?cè)紨?shù)組。
array.splice(start, deleteCount, [items])
start:【必須】整數(shù),規(guī)定添加/刪除項(xiàng)目的位置(包含),如果使用負(fù)數(shù)可從數(shù)組結(jié)尾處規(guī)定位置
deleteCount:【必須】要?jiǎng)h除的項(xiàng)目數(shù)量。如果設(shè)置為 0,則不會(huì)刪除項(xiàng)目。
items:【可選】向數(shù)組添加的新項(xiàng)目, 可以為一個(gè)元素也可以為多個(gè)元素。
指定位置刪除元素
指定位置插入元素
插入和刪除同時(shí)進(jìn)行
10.5.4??數(shù)組轉(zhuǎn)字符串
11.?函數(shù) ??
函數(shù): 就是可被重復(fù)調(diào)用執(zhí)行的代碼塊。
11.1??函數(shù)的定義
1、function是一個(gè)關(guān)鍵字, 和var、typeof一樣, 都是關(guān)鍵字, 后面要加空格;
2、函數(shù)名的命名規(guī)范和變量命名一樣, 只能是字母、數(shù)字、下劃線、美元符號(hào), 不能以數(shù)字開頭, 一般采用駝峰式命名大;
3、函數(shù)名后的()中放置函數(shù)形參, 形參可以為任意多個(gè)(意味著可以沒有形參), 如有有多個(gè)形參用","隔開;
4、函數(shù){}中就是需要執(zhí)行的代碼塊。
11.1.1??函數(shù)的調(diào)用
函數(shù)名(實(shí)參1, 實(shí)參2, ... , 實(shí)參3);
1、函數(shù)名應(yīng)和被調(diào)用的函數(shù)名保持一致;
2、實(shí)參和形參可以個(gè)數(shù)可以不用一一對(duì)應(yīng);
11.1.2??函數(shù)的運(yùn)用
計(jì)算兩個(gè)數(shù)的和
在JavaScript中,我們可以在函數(shù)內(nèi)部中聲明函數(shù)。
11.2??函數(shù)表達(dá)式
11.2.1??匿名函數(shù)
使用function關(guān)鍵字聲明一個(gè)函數(shù),但未給函數(shù)命名,所以叫匿名函數(shù)
11.2.2??函數(shù)表達(dá)式
使用function關(guān)鍵字聲明一個(gè)函數(shù),但未給函數(shù)命名,最后將匿名函數(shù)賦予一個(gè)變量,叫函數(shù)表達(dá)式。
函數(shù)也是一種數(shù)據(jù)類型, 屬于Object對(duì)象類型中的一種
函數(shù)表達(dá)式非常重要, 今后我們會(huì)經(jīng)常使用。
11.3??arguments對(duì)象
在javascript函數(shù)體內(nèi),標(biāo)識(shí)符arguments具有特殊含義。它是調(diào)用對(duì)象的一個(gè)特殊屬性,用來引用Arguments對(duì)象。 Arugments對(duì)象就像數(shù)組,注意這里只是像但本質(zhì)上并不是一個(gè)數(shù)組。
11.3.1??arguments的length屬性
判斷用戶輸入,如果只輸入兩個(gè)數(shù),就返回兩個(gè)數(shù)的和,如果返回三個(gè)數(shù),就返回三個(gè)數(shù)的和。
11.3.2??利用arugments對(duì)象像數(shù)組的特性獲取實(shí)參
通過arguments查找最大值
11.3.3??arguments的callee屬性
arguments.callee在遞歸中會(huì)經(jīng)常使用, 如果在函數(shù)中調(diào)用再次調(diào)用當(dāng)前函數(shù)強(qiáng)烈建議使用arguments.callee。
實(shí)例:不用循環(huán)實(shí)現(xiàn)計(jì)算1*2*3*4...*9*10的值
11.4??變量的作用域
變量按照作用域劃分有局部變量和全局變量。
11.4.1??局部變量
在JavaScript函數(shù)內(nèi)部聲明的變量(使用var聲明的)是局部變量,所以只能在函數(shù)內(nèi)部訪問它(該變量的作用域是局部的)。
您可以在不同的函數(shù)中使用名稱相同的局部變量,因?yàn)橹挥新暶鬟^該變量的函數(shù)才能識(shí)別出該變量。
注意:只要函數(shù)運(yùn)行完畢,局部變量就會(huì)被銷毀回收。
11.4.2??全局變量
在函數(shù)外聲明的變量是全局變量,網(wǎng)頁上的所有腳本和函數(shù)都能訪問它。
在函數(shù)內(nèi)部沒使用var來聲明的變量也屬于全部變量。
注意: 在函數(shù)內(nèi)部使用某一個(gè)變量, 會(huì)優(yōu)先查看函數(shù)內(nèi)部中是有這個(gè)變量, 如果函數(shù)內(nèi)部有這個(gè)變量, 那么使用的這個(gè)變量就是函數(shù)內(nèi)部聲明的變量; 反之函數(shù)內(nèi)部沒有這個(gè)變量, 那么使用的變量就有可能是函數(shù)外部的變量(最后如果在全局變量中也沒有,那么直接提示錯(cuò)誤))。
11.4.3??變量的生存期
JavaScript 變量的生命期從它們被聲明的時(shí)間開始。
局部變量會(huì)在函數(shù)運(yùn)行完畢后被銷毀。
全局變量會(huì)在頁面關(guān)閉后被銷毀。
11.4.4??擴(kuò)展
在JavaScript中沒有塊級(jí)作用域, 只有函數(shù)作用域。
在C, Java等語言中是有塊級(jí)作用域的, 塊級(jí)作用域內(nèi)的變量為局部變量, 塊級(jí)作用域意外不能夠訪問, 而在JavaScript中局部變量只可能存在于函數(shù)中。
12.?對(duì)象
JavaScript 提供多個(gè)內(nèi)建對(duì)象,比如 Object、String、Date、Array 等等,此外 JavaScript 允許自定義對(duì)象。
對(duì)象只是帶有屬性和方法的特殊數(shù)據(jù)類型。
12.1?創(chuàng)建 JavaScript 對(duì)象
12.1.1?通過new關(guān)鍵字創(chuàng)建對(duì)象
12.1.2?通過字面量創(chuàng)建對(duì)象
注意: 屬性名字可以加雙引號(hào)也可以不加雙引號(hào)。
12.1.3?通過構(gòu)造函數(shù)創(chuàng)建對(duì)象
12.2?訪問對(duì)象的屬性
12.2.1?通過點(diǎn)語法訪問對(duì)象屬性
12.2.2?通過中括號(hào)法訪問對(duì)象屬性
中括號(hào)法可以用變量作為屬性名,而點(diǎn)方法不可以;
中括號(hào)法可以用數(shù)字作為屬性名,而點(diǎn)語法不可以。
12.3?訪問對(duì)象的方法
12.4?this關(guān)鍵字
this是JavaScript語言的一個(gè)關(guān)鍵字。
它代表函數(shù)運(yùn)行時(shí),自動(dòng)生成的一個(gè)內(nèi)部對(duì)象,只能在函數(shù)內(nèi)部使用。
隨著函數(shù)使用場(chǎng)合的不同,this的值會(huì)發(fā)生變化。但是有一個(gè)總的原則,那就是this指的是,調(diào)用函數(shù)的那個(gè)對(duì)象。
12.4.1?純粹的函數(shù)調(diào)用
這是函數(shù)的最通常用法,屬于全局性調(diào)用,因此this就代表全局對(duì)象(Global)。
因?yàn)槲覀兪褂脀indow.fun()來調(diào)用函數(shù),調(diào)用函數(shù)的那個(gè)對(duì)象是window,所以this指向的也是window。
12.4.2?作為對(duì)象方法的調(diào)用
作為對(duì)象方法的調(diào)用,this?指向當(dāng)前實(shí)例對(duì)象。
因?yàn)槭褂胮oint.moveTo()來調(diào)用函數(shù),調(diào)用函數(shù)的那個(gè)對(duì)象是point,所以this指向的也是point。
12.4.3?作為構(gòu)造函數(shù)調(diào)用
所謂構(gòu)造函數(shù),就是通過這個(gè)函數(shù)生成一個(gè)新對(duì)象(object),這時(shí)this就指這個(gè)新對(duì)象。
12.5??for...in 循環(huán)
for...in 語句用于對(duì)數(shù)組或者對(duì)象的屬性進(jìn)行循環(huán)操作。
for ... in 循環(huán)中的代碼每執(zhí)行一次,就會(huì)對(duì)數(shù)組的元素或者對(duì)象的屬性進(jìn)行一次操作。
【語法格式】
12.6?eval()函數(shù)
eval()函數(shù)會(huì)將傳入的字符串當(dāng)做JavaScript代碼進(jìn)行執(zhí)行,例如:eval("2+3") 返回的是5。。
把JSON字符串轉(zhuǎn)化為js認(rèn)識(shí)的對(duì)象:
注意:eval()是一個(gè)危險(xiǎn)的函數(shù),從安全性來講不建議使用!
擴(kuò)展:JSON(JavaScript Object Notation, JavaScript對(duì)象標(biāo)記) 是一種輕量級(jí)的數(shù)據(jù)交換格式。
13.?Math和Date
13.1?Math對(duì)象
round 四舍五入獲取整數(shù)
console.log(Math.round(-1.5)); // 輸出:-1
floor 向下取整 地板
console.log(Math.floor(1.8)); // 輸出:1
console.log(Math.floor(1.3)); // 輸出:1
console.log(Math.floor(-1.6)); // 輸出:-2
ceil 向上取整 天花板
console.log(Math.ceil(1.2)); // 輸出:2
console.log(Math.ceil(1.9)); // 輸出:2
console.log(Math.ceil(-1.9)); // 輸出:-1
abs 取絕對(duì)值
console.log(Math.abs(-19)); // 輸出:19
console.log(Math.abs(-90.01)); // 輸出:90.01
PI 返回圓周率
console.log(Math.PI); // 輸出:3.141592653589793
min 返回 x 和 y 中的最小值
console.log(Math.min(20, 30)); // 輸出:20
max 返回 x 和 y 中的最大值
console.log(Math.max(20, 30)); // 輸出:30
pow 返回 x 的 y 次冪
console.log(Math.pow(2, 4)); // 輸出:16
random 返回一個(gè)介于 0 和 1 之間的隨機(jī)數(shù)(包括0,不包括1)
console.log(Math.random()); // 輸出:0到1之間的隨機(jī)數(shù)
13.2?Date對(duì)象
Date 對(duì)象用于處理日期和時(shí)間。
13.2.1?創(chuàng)建Date對(duì)象
?
13.2.2?Date對(duì)象方法

setTime()? ? ? ? ? ? 以毫秒設(shè)置 Date 對(duì)象。
13.3?每天日歷案例【課堂案例】
知識(shí)要點(diǎn):date對(duì)象 + 內(nèi)容節(jié)點(diǎn)
案例需求:顯示當(dāng)天日歷信息
?

14.?定時(shí)器
14.1?setInterval()
循環(huán)定時(shí)器:周而復(fù)始的執(zhí)行(循環(huán)執(zhí)行),比較常用
語法:
setInterval(code, millisec)
參數(shù)? ? ? ? ?描述
code? ? ? ?要調(diào)用的函數(shù)或要執(zhí)行的代碼串。
millisec? ? ?周期性執(zhí)行或調(diào)用 code 之間的時(shí)間間隔,以毫秒計(jì)。
14.2?setTimeout()
炸彈定時(shí)器:用完以后立刻報(bào)廢(只執(zhí)行一次)
語法:
setTimeout(code, millisec)
參數(shù)? ? ? ? ? ? ? ? ? ? ? ? ?描述
code? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??要調(diào)用的函數(shù)或要執(zhí)行的代碼串。
millisec? ? ? ? ? ? ? ??周期性執(zhí)行或調(diào)用 code 之間的時(shí)間間隔,以毫秒計(jì)。
14.3?清除定時(shí)器
clearInterval() 方法可取消由 setInterval() 設(shè)置的 timeout。
clearTimeout() 方法可取消由 setTimeout() 方法設(shè)置的 timeout。
15.?ES6語法
15.1?let關(guān)鍵字
let關(guān)鍵字是用于聲明變量的,類似于var,但是他有些特殊的特性。
用let聲明的變量不能重復(fù)聲明:

結(jié)果:

塊級(jí)作用于,var沒有作用域之分,就是在塊級(jí)里面聲明的變量,在全局,別的代碼塊里面也能用,而let不行。代碼塊指的是 if 、else if、 else、for、while等


不存在變量提升,具體意思是必須在該變量聲明之后使用該變量。
var效果:

結(jié)果:var聲明的變量可以在該變量聲明前使用,只是沒有賦值undefined。
let效果:
?

15.2?const關(guān)鍵字
const關(guān)鍵字是用于聲明常量的,也就是聲明時(shí)就要賦值,并且之后再也不能更改。
?
?

這里的不能修改是指,如果是基本類型,那么就不能對(duì)其值進(jìn)行修改,如上面的例子,如果是對(duì)象或者數(shù)組的換,就不能對(duì)對(duì)象或者數(shù)組的引用進(jìn)行修改,但是可以對(duì)其元素進(jìn)行修改。
?

?

塊級(jí)作用域,跟let一樣。
const一般用于聲明對(duì)象,let用于聲明基本數(shù)據(jù)類型。
15.3?解構(gòu)賦值
ES6允許按照一定的模式從數(shù)組或者對(duì)象中提取值,對(duì)變量進(jìn)行賦值,稱為解構(gòu)賦值。
?

?
15.4?聲明字符串的方式 ``
聲明字符串的方式有雙引號(hào)、單引號(hào)。
ES6添加了一個(gè) ``,
特性是可以換行和拼接方式有點(diǎn)不同:
用雙引號(hào)或者單引號(hào)進(jìn)行字符串定義時(shí),換行會(huì)報(bào)錯(cuò)。


?
使用新的方式不會(huì)報(bào)錯(cuò):
?
15.5?對(duì)象屬性定義的優(yōu)化
ES在定義對(duì)象屬性時(shí),如果屬性名和屬性值對(duì)應(yīng)的變量的字符串是一樣時(shí),可以省略屬性值。

?
?
15.6?箭頭函數(shù)
ES新增了一種定義函數(shù)的語法,箭頭函數(shù)。
其他特性都在這個(gè)代碼里面:
?
?
結(jié)果:配合代碼、注釋細(xì)細(xì)品味會(huì)大有收獲。
?

箭頭函數(shù)不能用做構(gòu)造函數(shù):
?

箭頭函數(shù)沒有參數(shù)列表屬性argument:
?

15.7?ES6允許給函數(shù)參數(shù)賦默認(rèn)值
?

結(jié)果:所以一般最后用在最后面。
?

如果需要多個(gè)參數(shù)都需要默認(rèn)值,最好配合解構(gòu)使用,把解構(gòu)形參放最后:

?
?
15.8?可變參數(shù)
ES6引入可變參數(shù)rest來代替arguments參數(shù)列表。
?

arguments與rest的區(qū)別有:
?
arguments是隱形注入的參數(shù),rest是顯性定義的參數(shù)。
arguments是類數(shù)組,實(shí)際是個(gè)對(duì)象,rest是個(gè)數(shù)組。??
arguments的值涵蓋所有形參,而rest不會(huì)涵蓋前面定義的形參,如果圖,arguments涵蓋了a、b形參,而rest沒有。
可變參數(shù)如果不是最后一個(gè)就會(huì)報(bào)錯(cuò)
?

15.9?擴(kuò)展運(yùn)算符 …
擴(kuò)展運(yùn)行符 … 能夠?qū)?shù)組轉(zhuǎn)化為逗號(hào)分割列表。
結(jié)果:
?

15.10?Set構(gòu)造函數(shù)
ES6新增了一個(gè)內(nèi)置構(gòu)造函數(shù)Set,代表著集合,類似數(shù)組,但是他的元素是唯一的,不允許出現(xiàn)重復(fù)元素。
結(jié)果:
?

15.11?Map結(jié)構(gòu)
ES6提供了Map結(jié)構(gòu),類似對(duì)象,是鍵值對(duì)的集合,但是鍵的范圍不限于字符串,各種類型,甚至對(duì)象都可以當(dāng)key。
?
結(jié)果:
?

15.12?Number方法擴(kuò)展

本章節(jié)沒有分享完哦~
完整版獲取找一下小動(dòng)~
更多干貨我們下期再說!
下期會(huì)分享
第五章節(jié)
jQuery
相關(guān)知識(shí)~
下期見!
