最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

教程揭秘 | 動(dòng)力節(jié)點(diǎn)內(nèi)部Java零基礎(chǔ)教學(xué)文檔第四篇:HTML_CSS_JavaScript(3)

2023-11-01 09:52 作者:動(dòng)力節(jié)點(diǎn)  | 我要投稿

接上期后續(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 ,它包含了三大部分:ECMAScriptDOM、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í)~

下期見!





教程揭秘 | 動(dòng)力節(jié)點(diǎn)內(nèi)部Java零基礎(chǔ)教學(xué)文檔第四篇:HTML_CSS_JavaScript(3)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
灌云县| 阿合奇县| 衡阳县| 夹江县| 衡山县| 普兰店市| 崇州市| 舟曲县| 大足县| 扎鲁特旗| 拜城县| 长海县| 马尔康县| 阿合奇县| 花莲县| 兰坪| 永济市| 德令哈市| 徐闻县| 锡林郭勒盟| 莫力| 田林县| 正阳县| 镇江市| 武强县| 蓝山县| 安阳县| 潜江市| 萨嘎县| 仁寿县| 高邑县| 乌拉特后旗| 芦山县| 洪洞县| 新余市| 同德县| 沂源县| 黎城县| 巨野县| 额敏县| 苗栗县|