《JavaScript與jQuery網(wǎng)頁(yè)前端開(kāi)發(fā)與設(shè)計(jì)-第2版》課件 CH03 JavaScript數(shù)據(jù)類型與運(yùn)算符;CH04 JavaScript語(yǔ)句和函數(shù);CH05 JavaScript BOM和DOM_第1頁(yè)
《JavaScript與jQuery網(wǎng)頁(yè)前端開(kāi)發(fā)與設(shè)計(jì)-第2版》課件 CH03 JavaScript數(shù)據(jù)類型與運(yùn)算符;CH04 JavaScript語(yǔ)句和函數(shù);CH05 JavaScript BOM和DOM_第2頁(yè)
《JavaScript與jQuery網(wǎng)頁(yè)前端開(kāi)發(fā)與設(shè)計(jì)-第2版》課件 CH03 JavaScript數(shù)據(jù)類型與運(yùn)算符;CH04 JavaScript語(yǔ)句和函數(shù);CH05 JavaScript BOM和DOM_第3頁(yè)
《JavaScript與jQuery網(wǎng)頁(yè)前端開(kāi)發(fā)與設(shè)計(jì)-第2版》課件 CH03 JavaScript數(shù)據(jù)類型與運(yùn)算符;CH04 JavaScript語(yǔ)句和函數(shù);CH05 JavaScript BOM和DOM_第4頁(yè)
《JavaScript與jQuery網(wǎng)頁(yè)前端開(kāi)發(fā)與設(shè)計(jì)-第2版》課件 CH03 JavaScript數(shù)據(jù)類型與運(yùn)算符;CH04 JavaScript語(yǔ)句和函數(shù);CH05 JavaScript BOM和DOM_第5頁(yè)
已閱讀5頁(yè),還剩274頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

JavaScript與jQuery

網(wǎng)頁(yè)前端開(kāi)發(fā)與設(shè)計(jì)-第2版學(xué)校名稱:XXXX主講教師:XXXX第3章JavaScript數(shù)據(jù)類型與運(yùn)算符本章學(xué)習(xí)目標(biāo) 掌握J(rèn)avaScript的基本數(shù)據(jù)類型與對(duì)象類型; 掌握J(rèn)avaScript類型轉(zhuǎn)換方法; 掌握J(rèn)avaScript運(yùn)算符的使用。目錄3.1JavaScript基本數(shù)據(jù)類型3.2JavaScript對(duì)象類型3.3JavaScript類型轉(zhuǎn)換3.4JavaScript運(yùn)算符3.5階段案例:生肖計(jì)算3.1JavaScript基本數(shù)據(jù)類型3.1.1Undefined類型3.1.2Null類型3.1.3String類型3.1.4Number類型3.1.5Boolean類型3.1JavaScript基本數(shù)據(jù)類型JavaScript有五種原始類型分別是:Number(數(shù)字)、Boolean(布爾值)、String(字符串)、Null(空值)和Undefined(未定義)。JavaScript提供了typeof方法用于檢測(cè)變量的數(shù)據(jù)類型,該方法會(huì)根據(jù)變量本身的數(shù)據(jù)類型給出對(duì)應(yīng)名稱的返回值。語(yǔ)法格式如下:typeof變量名稱3.1JavaScript基本數(shù)據(jù)類型對(duì)于指定的變量使用typeof方法,其返回值是提示數(shù)據(jù)類型的文本內(nèi)容。3.1.1Undefined類型所有Undefined類型的輸出值都是undefined。當(dāng)需要輸出的變量從未聲明過(guò),或者使用關(guān)鍵詞var聲明過(guò)但是從未進(jìn)行賦值時(shí)會(huì)顯示undefined字樣。例如:alert(y);//返回值為undefined,因?yàn)樽兞縴之前未使用關(guān)鍵詞var聲明或varx;alert(x);//返回值也是undefined,因?yàn)槲唇o變量x進(jìn)行賦值3.1.1Undefined類型【例3-1】JavaScript基礎(chǔ)數(shù)據(jù)類型Undefined的簡(jiǎn)單應(yīng)用3.1.2Null類型null值表示變量的內(nèi)容為空,可用于初始化變量,或者清空已經(jīng)賦值的變量。例如:varx=99;x=null;alert(x);//此時(shí)返回值是null而不是993.1.2Null類型【例3-2】JavaScript基礎(chǔ)數(shù)據(jù)類型Null的簡(jiǎn)單應(yīng)用3.1.3String類型在JavaScript中String類型用于存儲(chǔ)文本內(nèi)容,又稱為字符串類型。為變量進(jìn)行字符串賦值時(shí)需要使用引號(hào)(單引號(hào)或雙引號(hào)均可)括住文本內(nèi)容。例如:varcountry='China';或varcountry="China";3.1.3String類型如果字符串內(nèi)容本身也需要帶上引號(hào),則用于包圍字符串的引號(hào)不可以和文本內(nèi)容中的引號(hào)相同。例如字符串本身如果帶有雙引號(hào),則使用單引號(hào)包圍字符串;反之亦然。例如:vardialog='Todayisagift,thatiswhyitiscalled"Present".';或vardialog="Todayisagift,thatiswhyitiscalled'Present'.";3.1.3String類型String對(duì)象中包含了一系列方法,常用方法如表所示。3.1.3String類型1.字符串長(zhǎng)度在字符串中,每一個(gè)字符都有固定的位置,其位置從左往右進(jìn)行分配。以單詞hello為例,其位置規(guī)則如圖所示。首字符H從位置0開(kāi)始,第二個(gè)字符L是位置1,以此類推,直到最后一個(gè)字符O的位置是字符串的總長(zhǎng)度少1。3.1.3String類型1.字符串長(zhǎng)度【例3-3】JavaScript獲取字符串長(zhǎng)度的簡(jiǎn)單應(yīng)用3.1.3String類型2.獲取字符串中的單個(gè)字符在JavaScript中可以使用charAt()方法獲取字符串指定位置上的單個(gè)字符。其語(yǔ)法結(jié)構(gòu)如下:例如:charAt(index)其中index參數(shù)值填寫(xiě)需要獲取的字符所在位置。varmsg="HelloJavaScript";varx=msg.charAt(0);//表示獲取msg中的第一個(gè)字符,返回值為H3.1.3String類型2.獲取字符串中的單個(gè)字符如果需要獲取指定位置上單個(gè)字符的字符代碼,可以使用charCodeAt()方法。其語(yǔ)法結(jié)構(gòu)如下:例如:charCodeAt(index)var

msg="HelloJavaScript";varx=msg.charCodeAt(0);//表示獲取msg中的第一個(gè)字符的字符代碼,返回值為72其中index參數(shù)值填寫(xiě)需要獲取的字符所在位置。3.1.3String類型2.獲取字符串中的單個(gè)字符【例3-4】JavaScript獲取字符串中單個(gè)字符的應(yīng)用3.1.3String類型3.連接字符串在JavaScript中可以使用concat()方法將新的字符串內(nèi)容連接到原始字符串上。其語(yǔ)法結(jié)構(gòu)如下:例如:concat(string1,string2...,stringN);varmsg="Hello";varnewMsg=msg.concat("JavaScript");alert(newMsg);//返回值為"HelloJavaScript"該方法允許帶有一個(gè)或多個(gè)參數(shù),表示按照從左往右的依次連接這些字符串。3.1.3String類型3.連接字符串也可以直接使用加號(hào)(+)進(jìn)行字符串的連接,其效果相同。因此上述示例代碼可改為:varmsg="Hello";varnewMsg=msg+"JavaScript";alert(newMsg);//返回值為"HelloJavaScript"3.1.3String類型3.連接字符串【例3-5】JavaScript連接字符串的簡(jiǎn)單應(yīng)用3.1.3String類型3.查找字符串是否存在使用indexOf()和lastIndexOf()方法可以查找原始字符串中是否包含指定的字符串內(nèi)容。其語(yǔ)法格式如下:indexOf(searchString,startIndex)或lastIndexOf(searchString,startIndex)其中searchString參數(shù)位置填入需要用于對(duì)比查找的字符串片段,startIndex參數(shù)用于指定搜索的起始字符,該參數(shù)內(nèi)容如果省略則按照默認(rèn)順序搜索全文。3.1.3String類型3.查找字符串是否存在indexOf()和lastIndexOf()方法都可以用于查找指定內(nèi)容是否存在,如果存在,其返回值為指定內(nèi)容在原始字符串中的位置序號(hào);如果不存在,則直接返回-1。區(qū)別在于,indexOf()是從序號(hào)0的位置開(kāi)始正序檢索字符串內(nèi)容的,而lastIndexOf()是從序號(hào)最大值的位置開(kāi)始倒序檢索字符串內(nèi)容。3.1.3String類型3.查找字符串是否存在【例3-6】JavaScript檢查字符串是否存在的簡(jiǎn)單應(yīng)用

3.1.3String類型5.查找與替換字符串在JavaScript中使用match()或search()方法可以查找匹配正則表達(dá)式的字符串內(nèi)容。match()方法的語(yǔ)法格式如下:match(regExp)參數(shù)regExp的位置需要填入一個(gè)正則表達(dá)式,例如match(/a/g)表示全局查找字母a,后面的小寫(xiě)字母g是英文單詞gobal的首字母簡(jiǎn)寫(xiě),表示全局查找。其返回值為符合條件的所有字符串片段。3.1.3String類型5.查找與替換字符串search()方法的語(yǔ)法格式如下:search(regExp)參數(shù)regExp的位置同樣需要填入一個(gè)正則表達(dá)式。不同之處在于,search()方法的返回值是符合匹配條件的字符串索引值。3.1.3String類型5.查找與替換字符串在JavaScript中使用replace()方法可以替換匹配正則表達(dá)式的字符串內(nèi)容。replace()方法的語(yǔ)法格式如下:replace(regExp,replaceText)參數(shù)regExp的位置需要填入一個(gè)正則表達(dá)式,參數(shù)replaceText的位置填入需要替換的新的文本內(nèi)容。例如replace(/a/g,"A")表示的是把所有的小寫(xiě)字母a都替換為大寫(xiě)形式。該方法的返回值是已經(jīng)替換完畢的新字符串內(nèi)容。3.1.3String類型5.查找與替換字符串【例3-7】JavaScript查找和替換字符串

3.1.3String類型6.獲取字符串片段在JavaScript中可以對(duì)字符串類型的變量使用slice()和substrig()方法截取其中的字符串片段。其中slice()方法用于去掉指定片段,substring()方法用于節(jié)選指定片段。3.1.3String類型6.獲取字符串片段slice()方法語(yǔ)法格式如下:slice(start,end)其中start參數(shù)位置填寫(xiě)需要?jiǎng)h除的字符串的第一個(gè)字符位置,end參數(shù)位置填寫(xiě)需要?jiǎng)h除字符串的結(jié)束位置(不包括該位置上的字符),如果end參數(shù)省略則默認(rèn)填入字符串長(zhǎng)度。如果填入的屬性值為負(fù)數(shù),表示從字符串的最后一個(gè)位置開(kāi)始計(jì)算,例如-1表示倒數(shù)第一個(gè)字符。3.1.3String類型6.獲取字符串片段substring()方法語(yǔ)法格式如下:substring(start,end)與slice()方法的語(yǔ)法結(jié)構(gòu)類似,其中start參數(shù)位置填寫(xiě)需要節(jié)選的字符串的第一個(gè)字符位置,end參數(shù)位置填寫(xiě)需要節(jié)選字符串的結(jié)束位置(不包括該位置上的字符),同樣如果end參數(shù)省略則默認(rèn)填入字符串長(zhǎng)度。3.1.3String類型6.獲取字符串片段當(dāng)參數(shù)均為非負(fù)數(shù)時(shí),substring()與slice()方法獲取的結(jié)果完全一樣。只有參數(shù)值存在負(fù)數(shù)情況時(shí),這兩個(gè)方法才會(huì)有所不同:substring()方法會(huì)忽略負(fù)數(shù),直接將其當(dāng)作0來(lái)處理;而slice()方法會(huì)用字符串長(zhǎng)度加上該負(fù)數(shù)數(shù)值,計(jì)算出對(duì)應(yīng)的位置。例如:varmsg="happy";//該字符串長(zhǎng)度為5位varresult1=msg.substring(1,-1);//返回值為hvarresult2=slice(1,-1);//返回值為app3.1.3String類型6.獲取字符串片段【例3-8】JavaScript獲取字符串片段的簡(jiǎn)單應(yīng)用

3.1.3String類型7.字符串大小寫(xiě)轉(zhuǎn)換在JavaScript中可以對(duì)字符串類型的變量使用toLowerCase()和toUpperCase()方法轉(zhuǎn)換其中存在的大小寫(xiě)字母。其中toLowerCase()表示將所有字母轉(zhuǎn)換為小寫(xiě),toUpperCase()表示將所有字母轉(zhuǎn)換位大寫(xiě)。3.1.3String類型7.字符串大小寫(xiě)轉(zhuǎn)換【例3-9】JavaScript字符串大小寫(xiě)轉(zhuǎn)換3.1.3String類型8.轉(zhuǎn)義字符在前幾節(jié)的例題中都看到了alert()方法中帶有\(zhòng)n符號(hào)表示換行,這種符號(hào)稱為轉(zhuǎn)義字符。與C語(yǔ)言、Java語(yǔ)言相似,在JavaScript中String類型也包含了一系列轉(zhuǎn)義字符。具體情況如表所示。3.1.3String類型8.轉(zhuǎn)義字符【例3-10】JavaScript轉(zhuǎn)義字符的簡(jiǎn)單應(yīng)用3.1.4Number類型在JavaScript中使用Number類型表示數(shù)字,其數(shù)字可以是32位以內(nèi)的整數(shù)或64位以內(nèi)的浮點(diǎn)數(shù)。例如:varx=9;vary=3.14;Number類型還支持使用科學(xué)計(jì)數(shù)法、八進(jìn)制和十六進(jìn)制的表示方式。3.1.4Number類型1.科學(xué)計(jì)數(shù)法對(duì)于極大或極小的數(shù)字也可以使用科學(xué)記數(shù)法表示,寫(xiě)法格式如下:上述格式表示數(shù)字后面跟指數(shù)e再緊跟乘以的倍數(shù),其中數(shù)值可以是整數(shù)或浮點(diǎn)數(shù),倍數(shù)可以允許為負(fù)數(shù)。例如:數(shù)值e倍數(shù)varx1=3.14e8;varx2=3.14e-8;變量x1表示的數(shù)是3.14乘以10的8次方,即314000000;變量x2表示的數(shù)是3.14乘以10的-8次方,即0.0000000314。3.1.4Number類型1.科學(xué)計(jì)數(shù)法【例3-11】JavaScript科學(xué)計(jì)數(shù)法的簡(jiǎn)單應(yīng)用3.1.4Number類型2.八進(jìn)制與十六進(jìn)制數(shù)在JavaScript中,Number類型也可以用于表示八進(jìn)制或十六進(jìn)制的數(shù)。八進(jìn)制的數(shù)需要用數(shù)字0開(kāi)頭,后面跟的數(shù)字只能是0-7(八進(jìn)制字符)之間的一個(gè)。例如:varx=010;//這里相當(dāng)于十進(jìn)制的83.1.4Number類型2.八進(jìn)制與十六進(jìn)制數(shù)十六進(jìn)制的數(shù)需要用數(shù)字0和字母x開(kāi)頭,后面跟字符只能是0-9或A-F(十六進(jìn)制字符)之間的一個(gè),大小寫(xiě)不限。例如:varx=0xA;//這里相當(dāng)于十進(jìn)制的10或varx=0xa;//等同于0xA雖然Number類型可以使用八進(jìn)制或十六進(jìn)制的賦值方式,但是執(zhí)行代碼時(shí)仍然會(huì)將其轉(zhuǎn)換為十進(jìn)制結(jié)果。3.1.4Number類型2.八進(jìn)制與十六進(jìn)制數(shù)【例3-12】八進(jìn)制與十六進(jìn)制的表達(dá)方式

3.1.4Number類型3.浮點(diǎn)數(shù)要定義浮點(diǎn)數(shù),必須使用小數(shù)點(diǎn)以及小數(shù)點(diǎn)后面至少跟一位數(shù)字。例如:如果浮點(diǎn)數(shù)類型的小數(shù)點(diǎn)前面整數(shù)位為0可以省略。例如:varx=3.14;vary=5.0;varx=.15;//等同于0.153.1.4Number類型3.浮點(diǎn)數(shù)浮點(diǎn)數(shù)可以使用toFixed()方法規(guī)定小數(shù)點(diǎn)后保留幾位數(shù)。其語(yǔ)法格式如下:其中參數(shù)digital換成小數(shù)點(diǎn)后需要保留的位數(shù)即可。例如:toFixed(digital)varx=3.1415926;varresult=x.toFixed(2);//返回值為3.143.1.4Number類型3.浮點(diǎn)數(shù)該方法遵照四舍五入的規(guī)律,即使進(jìn)位后小數(shù)點(diǎn)后面只有0也會(huì)保留指定的位數(shù)。例如:varx=0.9999;varresult=x.toFixed(2);//返回值為1.003.1.4Number類型3.浮點(diǎn)數(shù)需要注意的是,在JavaScript中使用浮點(diǎn)數(shù)進(jìn)行計(jì)算,有時(shí)會(huì)產(chǎn)生誤差。例如:varx=0.7+0.1;alert(x);//返回值會(huì)變成0.7999999999999999,而不是0.8這是由于表達(dá)式使用的是十進(jìn)制數(shù),但是實(shí)際的計(jì)算是轉(zhuǎn)換成二進(jìn)制數(shù)計(jì)算再轉(zhuǎn)回十進(jìn)制結(jié)果的,在此過(guò)程中有時(shí)會(huì)損失精度。此時(shí)使用自定義函數(shù)將兩個(gè)加數(shù)都乘以10進(jìn)行計(jì)算后再除以10還原。3.1.4Number類型3.浮點(diǎn)數(shù)【例3-13】JavaScript浮點(diǎn)數(shù)的簡(jiǎn)單應(yīng)用3.1.4Number類型4.特殊Number值在JavaScript中,Number類型還有一些特殊值,如表所示。3.1.4Number類型4.特殊Number值(1)InfinityInfinity表示無(wú)窮大的含義,有正負(fù)之分。當(dāng)數(shù)值超過(guò)了JavaScript允許的范圍就會(huì)顯示為Infinity(超過(guò)上限)或-Infinity(超過(guò)下限)。例如:varx=9e30000;alert(x);//因?yàn)樵摂?shù)字已經(jīng)超出上限,返回值為Infinity3.1.4Number類型4.特殊Number值(1)Infinity在數(shù)字比較大小時(shí),無(wú)論原數(shù)據(jù)值為多少,結(jié)果為Infinity的兩個(gè)數(shù)認(rèn)為相等,而同樣兩個(gè)-Infinity也是相等的。例如:varx1=3e9000;varx2=9e3000;alert(x1==x2);//判斷變量x1與x2是否相等,返回值為true上述代碼中變量x1與x2的實(shí)際數(shù)據(jù)值并不相等,但是由于它們均超出了JavaScript可以接受的數(shù)據(jù)范圍,因此返回值均為Infinity,從而判斷是否相等時(shí)會(huì)返回true(真)。3.1.4Number類型4.特殊Number值(1)Infinity在JavaScript中使用數(shù)字0作為除數(shù)不會(huì)報(bào)錯(cuò),如果正數(shù)除以0返回值就是Infinity,負(fù)數(shù)除以0返回值為-Infinity,特殊情況0除以0的返回值為NaN(非數(shù)字)。例如:varx1=5/0;//返回值是Infinityvarx2=-5/0;//返回值是-Infinityvarx3=0/0;//返回值是NaN3.1.4Number類型4.特殊Number值(1)InfinityInfinity不可以與其他正常顯示的數(shù)字進(jìn)行數(shù)學(xué)計(jì)算,返回結(jié)果均會(huì)是NaN。例如:varx=Numer.POSITIVE_INFINITY;varresult=x+99;alert(result);//返回值為NaN3.1.4Number類型4.特殊Number值(1)Infinity【例3-14】JavaScript特殊Number值Infinity的應(yīng)用

3.1.4Number類型4.特殊Number值(2)NaNNaN表示的是非數(shù)字(NotaNumber),該數(shù)值用于表示數(shù)據(jù)轉(zhuǎn)換成Number類型失敗的情況,從而無(wú)需拋出異常錯(cuò)誤。例如將String類型轉(zhuǎn)換為Number類型。NaN因?yàn)椴皇钦嬲臄?shù)字,不能用于進(jìn)行數(shù)學(xué)計(jì)算。并且即使兩個(gè)數(shù)值均為NaN,它們也并不相等。例如將英文單詞轉(zhuǎn)換為Number類型,就會(huì)導(dǎo)致轉(zhuǎn)換結(jié)果為NaN,具體代碼如下:varx="red";varresult=Number(x);//返回值為NaN,因?yàn)闆](méi)有對(duì)應(yīng)的數(shù)值可以轉(zhuǎn)換3.1.4Number類型4.特殊Number值(2)NaNJavaScript還提供了用于判斷數(shù)據(jù)類型是否為數(shù)值的方法isNaN(),其返回值是布爾值。當(dāng)檢測(cè)的數(shù)據(jù)可以正確轉(zhuǎn)換為Number類型時(shí)返回真(true),其他情況返回假(false)。其語(yǔ)法規(guī)則如下:isNaN(變量名稱)3.1.4Number類型4.特殊Number值(2)NaN例如:varx1="red";varresult1=isNaN(x1);//返回值是假(false)

varx2="999";varresult2=isNaN(x2);//返回值是真(true)3.1.4Number類型4.特殊Number值(2)NaN【例3-15】JavaScript特殊Number值NaN的應(yīng)用3.1.5Boolean類型布爾值(boolean)在很多程序語(yǔ)言中都被用于進(jìn)行條件判斷,其值只有兩種:true(真)或者false(假)。3.1.5Boolean類型布爾類型的值可以直接使用單詞true或false,也可以使用表達(dá)式。例如:varanswer=true;varanswer=false;varanswer=(1>2);其中1>2的表達(dá)式不成立,因此返回結(jié)果為false(假)。3.1.5Boolean類型【例3-16】JavaScriptBoolean類型的簡(jiǎn)單應(yīng)用3.2JavaScript對(duì)象類型3.2.1本地對(duì)象3.2.2內(nèi)置對(duì)象3.2.3宿主對(duì)象3.2JavaScript對(duì)象類型在JavaScript中,對(duì)象類型分為三種:本地對(duì)象、內(nèi)置對(duì)象和宿主對(duì)象。本地對(duì)象(nativeobject)是ECMAScript定義的引用類型;內(nèi)置對(duì)象(built-inobject)指的是無(wú)需實(shí)例化可直接使用的對(duì)象,其實(shí)也是特殊的本地對(duì)象;宿主對(duì)象(hostobject)指的是用戶的機(jī)器環(huán)境,包括DOM和BOM。3.2.1本地對(duì)象1.數(shù)組Array2.日期Date3.正則表達(dá)式RegExp

4.對(duì)象Object3.2.1本地對(duì)象1.數(shù)組Array在JavaScript中可以使用數(shù)組(Array)類型在單個(gè)變量中存儲(chǔ)一系列的值。例如:varmobile=newArray();varmobile[0]="蘋果";varmobile[1]="三星";varmobile[2]="華為";數(shù)組是從0開(kāi)始計(jì)數(shù)的,因此第一個(gè)元素的下標(biāo)是[0],后面每新增一個(gè)元素下標(biāo)+1。使用Array類型存儲(chǔ)數(shù)組的特點(diǎn)是無(wú)需在一開(kāi)始聲明數(shù)組的具體元素?cái)?shù)量,可以在后續(xù)代碼中陸續(xù)新增數(shù)組元素。3.2.1本地對(duì)象1.數(shù)組Array如果一開(kāi)始就可以確定數(shù)組的長(zhǎng)度,即其中的元素不需要后續(xù)動(dòng)態(tài)加入,可直接寫(xiě)成:varmobile=newArray("蘋果","三星","華為");或varmobile=["蘋果","三星","華為"];此時(shí)數(shù)組元素之間使用逗號(hào)隔開(kāi)。3.2.1本地對(duì)象1.數(shù)組ArrayArray對(duì)象還包含了length屬性,可以用于獲取當(dāng)前數(shù)組的長(zhǎng)度,即數(shù)組中的元素個(gè)數(shù)。如果當(dāng)前數(shù)組中沒(méi)有包含元素,則length值為0。例如:varmobile=["蘋果","三星","華為"];varx=mobile.length;//這里x值為3Array對(duì)象還包含了一系列方法用于操作數(shù)組,常用方法如表4-7所示。3.2.1本地對(duì)象1.數(shù)組Array【例3-17】JavaScriptArray對(duì)象的簡(jiǎn)單應(yīng)用

3.2.1本地對(duì)象2.日期Date在JavaScript中使用Date對(duì)象處理時(shí)間日期有關(guān)內(nèi)容。有四種初始化方式,列舉如下://表示獲取當(dāng)前的日期與時(shí)間newDate();//使用表示日期時(shí)間的字符串定義時(shí)間,例如填入May10,200012:12:00newDate(dateString);//使用從1970年1月1日到指定日期的毫秒數(shù)定義時(shí)間,例如填入1232345newDate(milliseconds);//自定義年、月、日、時(shí)、分、秒和毫秒,時(shí)分秒和毫秒?yún)?shù)缺省情況默認(rèn)為0newDate(year,month,day,hours,minutes,seconds,milliseconds);可以用Date對(duì)象一系列方法分別獲取指定的內(nèi)容,Date對(duì)象的常見(jiàn)方法如表3-6所示。3.2.1本地對(duì)象2.日期Date【例3-18】JavaScriptDate對(duì)象的簡(jiǎn)單應(yīng)用

3.2.1本地對(duì)象3.正則表達(dá)式RegExpRegExp對(duì)象表示正則表達(dá)式(RegularExpression),通常用于檢索文本中是否包含指定的字符串。其語(yǔ)法格式如下:newRegExp(pattern[,attributes])

參數(shù)解釋如下:pattern:該參數(shù)為字符串形式,用于規(guī)定正則表達(dá)式的匹配規(guī)則或填入其他正則表達(dá)式。attributes:該參數(shù)為可選參數(shù),可包含屬性值g、i或者m,分別表示全局匹配、區(qū)分大小寫(xiě)匹配與多行匹配。3.2.1本地對(duì)象3.正則表達(dá)式RegExp例如:還有一種簡(jiǎn)寫(xiě)形式,格式如下:因此前面用于全局檢索數(shù)字0-9的正則表達(dá)式聲明可修改為如下內(nèi)容:varpattern=newRegExp([0-9],g);上述代碼表示聲明了一個(gè)用于全局檢索文本中是否包含數(shù)字0-9之間任意字符的正則表達(dá)式。/pattern/[attribute]varpattern=/[0-9]/g;JavaScript中常用的正則表達(dá)式如表3-7所示。3.2.1本地對(duì)象3.正則表達(dá)式RegExp

在RegExp對(duì)象創(chuàng)建完畢后,有兩種方法可以用于檢索文本,如表所示。3.2.1本地對(duì)象3.正則表達(dá)式RegExp(1)exec()方法的應(yīng)用exec()方法用于檢索文本中匹配正則表達(dá)式的字符串內(nèi)容。其語(yǔ)法格式如下:

例如:RegExpObject.exec(string)該方法如果找到了匹配內(nèi)容,其返回值為存放有檢索結(jié)果的數(shù)組;如果未找到任何匹配內(nèi)容,則返回null值。varpattern=newRegExp("e");//檢索文本中是否包含小寫(xiě)字母e的正則表達(dá)式varresult1=pattern.exec("Hello");//返回值為e,因?yàn)樽址邪?xiě)字母evarresult2=pattern.exec("Hello");//返回值為null,因?yàn)樽址罄m(xù)內(nèi)容中不包含小寫(xiě)字母e3.2.1本地對(duì)象3.正則表達(dá)式RegExp(1)exec()方法的應(yīng)用如果查到內(nèi)容較多,可以使用while循環(huán)語(yǔ)句進(jìn)行檢索。例如:vars="Helloeveryone";//初始字符串varpattern=newRegExp("e");//檢索文本中是否包含小寫(xiě)字母e的正則表達(dá)式varresult;//用于獲取每次檢索結(jié)果//while循環(huán)while((result=pattern.exec(s))!=null){alert(result);//輸出本次檢索結(jié)果}3.2.1本地對(duì)象3.正則表達(dá)式RegExp(1)exec()方法的應(yīng)用【例3-19】JavaScript正則表達(dá)式exec()方法的簡(jiǎn)單應(yīng)用3.2.1本地對(duì)象3.正則表達(dá)式RegExp(2)test()方法的應(yīng)用

test()方法用于檢測(cè)文本中是否包含指定的正則表達(dá)式內(nèi)容,返回值為布爾值。其語(yǔ)法格式如下:例如:RegExpObject.test(string)varpattern=newRegExp("e");//檢索文本中是否包含小寫(xiě)字母e的正則表達(dá)式varresult=pattern.test("Hello");//返回值為true,因?yàn)樽址邪?xiě)字母e3.2.1本地對(duì)象3.正則表達(dá)式RegExp(2)test()方法的應(yīng)用【例3-20】JavaScript正則表達(dá)式test()方法的簡(jiǎn)單應(yīng)用3.2.1本地對(duì)象4.對(duì)象Object在JavaScript中,所有類型都是對(duì)象,例如字符串、數(shù)字、數(shù)組等,這些可以帶有屬性和方法的變量稱為對(duì)象。例如String對(duì)象包含了length屬性用于獲取字符串長(zhǎng)度,也包含了subtring()、indexOf()等方法用于處理字符串。屬性是與對(duì)象相關(guān)的值,方法是對(duì)象可執(zhí)行的動(dòng)作。例如,將學(xué)生作為現(xiàn)實(shí)中的對(duì)象,他具有學(xué)號(hào)、姓名、班級(jí)、專業(yè)等屬性值,也可以具有選課、學(xué)習(xí)和考試等行為動(dòng)作。3.2.1本地對(duì)象4.對(duì)象Object在JavaScript中創(chuàng)建student對(duì)象的寫(xiě)法如下:varstudent=newObject();="張三";//姓名student.id="2016010212";//學(xué)號(hào)student.major="計(jì)算機(jī)科學(xué)與技術(shù)";//專業(yè)//學(xué)習(xí)方法student.study=function(){alert("開(kāi)始學(xué)習(xí)");};3.2.1本地對(duì)象4.對(duì)象Object獲取對(duì)象中的指定屬性有兩種方法,一是對(duì)象變量名稱后面加點(diǎn)(.)和屬性名稱(對(duì)象名.屬性名);二是對(duì)象變量名稱后面使用中括號(hào)和引號(hào)包圍屬性名稱(對(duì)象名["屬性名"])。仍然以上面的student對(duì)象為例,獲取其中學(xué)生姓名的寫(xiě)法如下:varresult=;或varresult=student["name"];3.2.1本地對(duì)象4.對(duì)象Object還可以用該方法直接修改對(duì)象中的屬性值,例如將之前的學(xué)生姓名張三換成新內(nèi)容:="李四";alert();//此時(shí)輸出結(jié)果不再是張三,而是修改后的李四。3.2.1本地對(duì)象4.對(duì)象Object【例3-21】JavaScriptObject對(duì)象的簡(jiǎn)單應(yīng)用

3.2.2內(nèi)置對(duì)象1.Gobal對(duì)象2.Math對(duì)象3.2.2內(nèi)置對(duì)象1.Gobal對(duì)象在JavaScript中Gobal對(duì)象又稱為全局對(duì)象,其中包含的屬性和函數(shù)可以用于所有的本地JavaScript對(duì)象。Gobal對(duì)象的全局屬性和方法分別如表3-9和3-10所示。3.2.2內(nèi)置對(duì)象2.Math對(duì)象在JavaScript中Math對(duì)象用于數(shù)學(xué)計(jì)算,無(wú)需初始化創(chuàng)建,可以直接使用關(guān)鍵詞Math調(diào)用其所有的屬性和方法。Math對(duì)象的常用屬性和常用方法分別如表3-11和表3-12所示。【例3-22】JavaScriptMath對(duì)象的簡(jiǎn)單應(yīng)用

3.2.3宿主對(duì)象宿主對(duì)象包括HTMLDOM(文檔對(duì)象模型)和BOM(瀏覽器對(duì)象模型)。具體內(nèi)容和用法請(qǐng)參考第5章內(nèi)容。3.3JavaScript類型轉(zhuǎn)換3.3.1轉(zhuǎn)換成字符串3.3.2轉(zhuǎn)換成數(shù)字3.3.3強(qiáng)制類型轉(zhuǎn)換3.3.1轉(zhuǎn)換成字符串在JavaScript中,布爾值類型(Boolean)和數(shù)字類型(Number)這兩種基本數(shù)據(jù)類型均可使用toString()方法把值轉(zhuǎn)換為字符串形式。布爾值類型(Boolean)的toString()方法只能根據(jù)初始值返回true或者false。例如:varx=true;varresult=x.toString();//返回"true"3.3.1轉(zhuǎn)換成字符串而數(shù)字類型(Number)使用toString()方法有兩種模式,分別稱為默認(rèn)模式和基數(shù)模式。在默認(rèn)模式中,toString()不帶參數(shù)直接使用,此時(shí)無(wú)論是整數(shù)、小數(shù)或者科學(xué)計(jì)數(shù)法表示的內(nèi)容,都會(huì)顯示為十進(jìn)制的數(shù)值。例如:varx1=99;varx2=99.90;varx3=1.25e8;

varresult1=x1.toString();//返回值為"99"varresult2=x2.toString();//返回值為"99.9"varresult3=x3.toString();//返回值為"125000000"3.3.1轉(zhuǎn)換成字符串在基數(shù)模式下,需要在toString()方法的括號(hào)內(nèi)部填入一個(gè)指定的參數(shù),根據(jù)參數(shù)指示把原始數(shù)據(jù)轉(zhuǎn)換為二進(jìn)制、八進(jìn)制或十六進(jìn)制數(shù)。其中二進(jìn)制對(duì)應(yīng)基數(shù)2,八進(jìn)制對(duì)應(yīng)基數(shù)8,十六進(jìn)制對(duì)應(yīng)基數(shù)16。例如:varx=10;varresult1=x.toString(2);//聲明將原始數(shù)據(jù)轉(zhuǎn)換成二進(jìn)制數(shù),返回值為"1010"varresult2=x.toString(8);//聲明將原始數(shù)據(jù)轉(zhuǎn)換成八進(jìn)制數(shù),返回值為"12"varresult3=x.toString(16);//聲明將原始數(shù)據(jù)轉(zhuǎn)換成十六進(jìn)制數(shù),返回值為"A"由此可見(jiàn),對(duì)于同一個(gè)變量使用toString()方法進(jìn)行轉(zhuǎn)換,如果填入的基數(shù)不同會(huì)導(dǎo)致返回完全不同的結(jié)果。3.3.1轉(zhuǎn)換成字符串【例3-23】JavaScript轉(zhuǎn)換字符串類型的簡(jiǎn)單應(yīng)用3.3.2轉(zhuǎn)換成數(shù)字JavaScript提供了兩種將String類型轉(zhuǎn)換為Number類型的方法:parseInt()和parseFloat(),其中parseInt()用于將值轉(zhuǎn)換為整數(shù),parseFloat()用于將值轉(zhuǎn)換為浮點(diǎn)數(shù)。這兩種方法僅適用于對(duì)String類型的數(shù)字內(nèi)容轉(zhuǎn)換,其他類型的返回值都是NaN。3.3.2轉(zhuǎn)換成數(shù)字(1)parseInt()方法parseInt()方法轉(zhuǎn)換的原理是從左往右依次檢查每個(gè)位置上的字符,判斷該位置上是否是有效數(shù)字,如果是則將有效數(shù)字轉(zhuǎn)換為Number類型,直到發(fā)現(xiàn)不是數(shù)字的字符,則停止后續(xù)的檢查工作。例如:如果需要轉(zhuǎn)換的字符串從第一個(gè)位置上就不是有效數(shù)字,則直接返回NaN。例如:varx="123hello";varresult=parseInt(x);//返回值是123,因?yàn)閔不是有效數(shù)字,則停止檢查varx="hello";varresult=parseInt(x);//返回值是NaN,因?yàn)榈谝粋€(gè)字符h就不是有效數(shù)字,直接停止檢查3.3.2轉(zhuǎn)換成數(shù)字(1)parseInt()方法由于parseInt只能進(jìn)行整數(shù)數(shù)字的轉(zhuǎn)換,因此檢測(cè)到某個(gè)字符位置上是小數(shù)點(diǎn)也會(huì)認(rèn)為不是有效數(shù)字,從而終止檢測(cè)和轉(zhuǎn)換。例如:parseInt()方法還有一個(gè)可選的參數(shù)二,可以用于聲明需要轉(zhuǎn)換的數(shù)字為二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制等。例如:varx="3.14";varresult=parseInt(x);//返回值是3,因?yàn)樾?shù)點(diǎn)不是有效數(shù)字,則停止檢查varx="10";varresult1=parseInt(x,2);//表示原始數(shù)據(jù)為二進(jìn)制,返回值為2varresult2=parseInt(x,8);//表示原始數(shù)據(jù)為八進(jìn)制,返回值為8varresult3=parseInt(x,10);//表示原始數(shù)據(jù)為十進(jìn)制,返回值為10varresult4=parseInt(x,16);//表示原始數(shù)據(jù)為十六進(jìn)制,返回值為163.3.2轉(zhuǎn)換成數(shù)字(1)parseInt()方法有一種特殊情況需要注意:如果原始數(shù)據(jù)為十進(jìn)制數(shù),但是前面包含數(shù)字0開(kāi)頭,則最好使用參數(shù)二進(jìn)行特別強(qiáng)調(diào),否則會(huì)被默認(rèn)轉(zhuǎn)換為八進(jìn)制數(shù)。例如:varx="010";varresult1=parseInt(x);//表示原始數(shù)據(jù)為八進(jìn)制,返回值為8varresult2=parseInt(x,10);//表示原始數(shù)據(jù)為十進(jìn)制,返回值為10varresult3=parseInt(x,8);//表示原始數(shù)據(jù)為八進(jìn)制,返回值為83.3.2轉(zhuǎn)換成數(shù)字(1)parseInt()方法【例3-24】JavaScript轉(zhuǎn)換整數(shù)類型的簡(jiǎn)單應(yīng)用3.3.2轉(zhuǎn)換成數(shù)字(2)parseFloat()方法parseFloat()方法的轉(zhuǎn)換原理與parseInt()方法類似,都是從左往右依次檢查每個(gè)位置上的字符,判斷該位置上是否是有效數(shù)字,如果是則將有效數(shù)字轉(zhuǎn)換為Number類型,直到發(fā)現(xiàn)不是數(shù)字的字符,則停止后續(xù)的檢查工作。與parseInt()方法類似,如果需要轉(zhuǎn)換的字符串從第一個(gè)位置上就不是有效數(shù)字,則直接返回NaN。例如:varx="hello3.14";varresult=parseFloat(x);//返回值是NaN,因?yàn)榈谝粋€(gè)字符h就不是有效數(shù)字,則停止檢查3.3.2轉(zhuǎn)換成數(shù)字(2)parseFloat()方法但是與parseInt()方法不同的是,小數(shù)點(diǎn)在parseInt()方法中也認(rèn)為是無(wú)效字符,但是在parseFloat()方法中首次出現(xiàn)的小數(shù)點(diǎn)也被認(rèn)為是有效的。例如:如果同時(shí)出現(xiàn)多次小數(shù)點(diǎn),也只有第一個(gè)小數(shù)點(diǎn)是有效的。例如:varx="3.14hello";varresult=parseFloat(x);//返回值是3.14,因?yàn)閔不是有效數(shù)字,則停止檢查varx="26";varresult=parseFloat(x);//返回值是3.14,因?yàn)榈诙€(gè)小數(shù)點(diǎn)不是有效數(shù)字,則停止檢查3.3.2轉(zhuǎn)換成數(shù)字(2)parseFloat()方法和parseInt()還有一個(gè)不同之處在于:parseFloat()方法只允許接受十進(jìn)制的表示方法,而parseInt()方法允許轉(zhuǎn)換二進(jìn)制、八進(jìn)制和十六進(jìn)制數(shù)。因此八進(jìn)制數(shù)如果是最前面帶有數(shù)字0的形式,會(huì)直接忽略0轉(zhuǎn)換為普通十進(jìn)制數(shù)。例如:varx="010";varresult1=parseInt(x);//默認(rèn)為是八進(jìn)制數(shù),返回值為8varresult2=parseFloat(x);//默認(rèn)為是十進(jìn)制數(shù),返回值為103.3.2轉(zhuǎn)換成數(shù)字(2)parseFloat()方法而十六進(jìn)制數(shù)中如果出現(xiàn)字母則直接按照字面的意思認(rèn)為是無(wú)效的字符串。例如:varx="A";varresult1=parseInt(x,16);//parseInt()允許十六進(jìn)制數(shù),返回值為10varresult2=parseFloat(x);//parseFloat()不允許十六進(jìn)制數(shù),返回值為NaN3.3.2轉(zhuǎn)換成數(shù)字(2)parseFloat()方法【例3-25】JavaScript轉(zhuǎn)換浮點(diǎn)數(shù)類型的簡(jiǎn)單應(yīng)用3.3.3強(qiáng)制類型轉(zhuǎn)換一些特殊的值無(wú)法使用toString()、parseInt()或parseFloat()方法進(jìn)行轉(zhuǎn)換,例如null、undefined等。此時(shí)可以使用JavaScript中的強(qiáng)制轉(zhuǎn)換(TypeCasting)對(duì)其進(jìn)行轉(zhuǎn)換。3.3.3強(qiáng)制類型轉(zhuǎn)換在JavaScript中有三種強(qiáng)制類型轉(zhuǎn)換函數(shù),解釋如下:Boolean(value):把指定的值強(qiáng)制轉(zhuǎn)換為布爾值。Number(value):把指定的值強(qiáng)制轉(zhuǎn)換為數(shù)值(整數(shù)或浮點(diǎn)數(shù))。String(value):把指定的值強(qiáng)制轉(zhuǎn)換為字符串。3.3.3強(qiáng)制類型轉(zhuǎn)換1.Boolean()函數(shù)JavaScript中所有其他類型都可以使用類型轉(zhuǎn)換函數(shù)Boolean()轉(zhuǎn)換成布爾值,再進(jìn)行后續(xù)計(jì)算。當(dāng)需要轉(zhuǎn)換的值為非空字符串時(shí),Boolean()函數(shù)的返回值為true;而當(dāng)需要轉(zhuǎn)換的值為空字符串時(shí)會(huì)返回false。例如:varresult1=Boolean("hello");//非空字符串的返回值為truevarresult2=Boolean("");//空字符串的返回值為false3.3.3強(qiáng)制類型轉(zhuǎn)換1.Boolean()函數(shù)當(dāng)需要轉(zhuǎn)換的值為數(shù)字時(shí),整數(shù)0的返回值為false,其余所有整數(shù)與浮點(diǎn)數(shù)的返回值為true。例如:varresult1=Boolean(0);//數(shù)字0的返回值為falsevarresult2=Boolean(999);//非0整數(shù)的返回值為truevarresult3=Boolean(3.14);//浮點(diǎn)數(shù)的返回值為true3.3.3強(qiáng)制類型轉(zhuǎn)換1.Boolean()函數(shù)當(dāng)需要轉(zhuǎn)換的值為null或undefined時(shí),Boolean()函數(shù)的返回值均為false。例如:當(dāng)需要轉(zhuǎn)換的值本身就是布爾值時(shí),會(huì)轉(zhuǎn)換成原本的值。例如:varresult1=Boolean(null);//返回值為falsevarresult2=Boolean(undefined);//返回值為falsevarresult1=Boolean(true);//返回值為truevarresult2=Boolean(false);//返回值為false3.3.3強(qiáng)制類型轉(zhuǎn)換2.

Number()函數(shù)在JavaScript中Number()函數(shù)可以將任意類型的值強(qiáng)制轉(zhuǎn)換為數(shù)字類型。當(dāng)需要轉(zhuǎn)換的內(nèi)容為符合語(yǔ)法規(guī)范的整數(shù)或小數(shù)時(shí),Number()將調(diào)用對(duì)應(yīng)的parseInt()或parseFloat()方法進(jìn)行轉(zhuǎn)換。例如:當(dāng)需要轉(zhuǎn)換的值為布爾值時(shí),true會(huì)轉(zhuǎn)換為整數(shù)1,false會(huì)轉(zhuǎn)換為整數(shù)0。例如:varx=Number("2");//返回值為整數(shù)2vary=Number("2.9");//返回值為浮點(diǎn)數(shù)2.9varx=Number(true);//返回值為整數(shù)1vary=Number(false);//返回值為整數(shù)03.3.3強(qiáng)制類型轉(zhuǎn)換2.

Number()函數(shù)與直接使用parseInt()和parseFloat()方法進(jìn)行數(shù)字類型轉(zhuǎn)換不同的是,如果需要轉(zhuǎn)換的值為數(shù)字后面跟隨超過(guò)一個(gè)小數(shù)點(diǎn)或其他無(wú)效字符時(shí),Number()會(huì)返回NaN。例如:varx="2.12.13";varresult1=parseInt(x);//返回值為整數(shù)2varresult2=parseFloat(x);//返回值為浮點(diǎn)數(shù)2.12varresult3=Number(x);//返回值為NaN3.3.3強(qiáng)制類型轉(zhuǎn)換2.

Number()函數(shù)當(dāng)需要轉(zhuǎn)換的值為null或undefined時(shí),Number()函數(shù)分別返回0和NaN。例如:當(dāng)需要轉(zhuǎn)換的值為其他自定義對(duì)象時(shí),返回值均為NaN。例如:varx1=null;//null值varx2;//undefined值varresult1=Number(x1);//返回整數(shù)0varresult2=Number(x2);//返回NaNvarstudent=newObject();varresult=Number(student);//返回NaN3.3.3強(qiáng)制類型轉(zhuǎn)換3.String(value)函數(shù)在JavaScript中String()函數(shù)可以將任意類型的值強(qiáng)制轉(zhuǎn)換為字符串類型并保留字面內(nèi)容,這與toString()的轉(zhuǎn)換方法類似。與toString()方法不同之處在于,String()函數(shù)還可以將null、undefined類型強(qiáng)制轉(zhuǎn)換為字符串類型。例如:varx=null;varresult1=String(x);//返回值為字符串"null"varresult2=x.toString();//發(fā)生錯(cuò)誤,無(wú)返回值3.4JavaScript運(yùn)算符3.4.1賦值運(yùn)算符3.4.2算術(shù)運(yùn)算符3.4.3邏輯運(yùn)算符3.4.4關(guān)系運(yùn)算符3.4.5相等性運(yùn)算符3.4.6條件運(yùn)算符3.4.1賦值運(yùn)算符在JavaScript中,運(yùn)算符=專門用來(lái)為變量賦值,因此也稱為賦值運(yùn)算符。在聲明變量時(shí)可以使用賦值運(yùn)算符對(duì)其進(jìn)行初始化,例如:varx1=9;//為變量x1賦值為整數(shù)9varx2="hello";//為變量x2賦值為字符串"hello"3.4.1賦值運(yùn)算符也可以使用賦值運(yùn)算符將已存在的變量值賦值給新的變量,例如:還可以使用賦值運(yùn)算符為多個(gè)變量連續(xù)賦值,例如:賦值運(yùn)算符的右邊還可以接受表達(dá)式,例如:varx1=9;//為變量x1賦值為整數(shù)9varx2=x1;//將變量x1的值賦值給新聲明的變量x2varx=y=z=99;//此時(shí)變量x、y、z的賦值均為整數(shù)99varx=100+20;//此時(shí)變量x將賦值為120這里使用了加法(+)運(yùn)算符形成的表達(dá)式,在運(yùn)行過(guò)程中會(huì)優(yōu)先對(duì)表達(dá)式進(jìn)行計(jì)算,然后再對(duì)變量x進(jìn)行賦值。3.4.2算術(shù)運(yùn)算符在JavaScript中所有的基本算術(shù)均可以使用對(duì)應(yīng)的算術(shù)運(yùn)算符完成,包括加減乘除和求余等。算術(shù)運(yùn)算符的常見(jiàn)用法如表3-13所示。3.4.2算術(shù)運(yùn)算符其中加號(hào)還有一個(gè)特殊用法:可用于連接文本內(nèi)容或字符串變量。例如:如果將字符串和數(shù)字用加號(hào)相加,則會(huì)先將數(shù)字轉(zhuǎn)換為字符串,再進(jìn)行連接。例如:vars1="Hello";vars2="JavaScript";vars3=s1+s2;//結(jié)果會(huì)是HelloJavaScriptvars="Hello";varx=2016;varresult=s+x;//結(jié)果會(huì)是Hello20163.4.2算術(shù)運(yùn)算符上述代碼中即使字符串本身也是數(shù)字內(nèi)容,使用加號(hào)連接仍然不會(huì)進(jìn)行數(shù)學(xué)運(yùn)算。例如:vars="2015";varx=2016;varresult=s+x;//結(jié)果會(huì)是20152016,而不是兩個(gè)數(shù)字相加的和3.4.2算術(shù)運(yùn)算符將賦值運(yùn)算符(等號(hào))和算術(shù)運(yùn)算符(加、減、乘、除、求余數(shù))結(jié)合使用,可以達(dá)到簡(jiǎn)寫(xiě)的效果。具體用法如表所示。3.4.3邏輯運(yùn)算符邏輯運(yùn)算符有三種類型:NOT(邏輯非)、AND(邏輯與)和OR(邏輯或)。邏輯運(yùn)算符使用的符號(hào)與對(duì)應(yīng)關(guān)系如表所示。3.4.3邏輯運(yùn)算符在進(jìn)行邏輯運(yùn)算之前,JavaScript中自帶的抽象操作ToBoolean會(huì)將運(yùn)算條件轉(zhuǎn)換為邏輯值。轉(zhuǎn)換規(guī)則如表所示。3.4.3邏輯運(yùn)算符1.邏輯非運(yùn)算符(NOT)在JavaScript中,邏輯非運(yùn)算符號(hào)與C語(yǔ)言和Java語(yǔ)言都相同,使用感嘆號(hào)(?。┎⒎胖迷谶\(yùn)算內(nèi)容左邊表示。邏輯非運(yùn)算符的返回值只能是布爾值,即true或者false。邏輯非的運(yùn)算規(guī)則如表所示。3.4.3邏輯運(yùn)算符2.邏輯與運(yùn)算符(AND)在JavaScript中,邏輯與運(yùn)算符使用雙和符號(hào)(&&)表示,用于連接符號(hào)前后的兩個(gè)條件判斷,表示并列關(guān)系。當(dāng)兩個(gè)條件均為布爾值時(shí),邏輯與的運(yùn)算結(jié)果也是布爾值(true或者false)。判斷結(jié)果如表所示。3.4.3邏輯運(yùn)算符2.邏輯與運(yùn)算符(AND)還有一種特殊情況:當(dāng)條件1為假(false)時(shí),無(wú)論條件2是任何內(nèi)容(例如null值、undefined、數(shù)字、對(duì)象等),最終返回值都是假(false)。原因是邏輯與有簡(jiǎn)便運(yùn)算的特性,即如果第一個(gè)條件為假(false)的話,直接判斷邏輯與的運(yùn)行結(jié)果為假(false),不再執(zhí)行第二個(gè)條件。例如:varx1=false;varresult=x1&&x2;//因?yàn)閤1為false,可以忽略x2直接判斷最終結(jié)果alert(result);//該語(yǔ)句執(zhí)行結(jié)果為false由于條件1為false,邏輯與會(huì)直接判定最終結(jié)果為false,直接忽略條件2。因此即使本例中條件2的變量未聲明都不影響代碼的運(yùn)行。3.4.3邏輯運(yùn)算符2.邏輯與運(yùn)算符(AND)如果存在某個(gè)條件是數(shù)字類型,則先將其轉(zhuǎn)換為布爾值再繼續(xù)判斷。其中數(shù)字0對(duì)應(yīng)的是假(false),其他非0的數(shù)字對(duì)應(yīng)的都是真(true)。例如:varx1=0;//對(duì)應(yīng)的是falsevarx2=99;//對(duì)應(yīng)的是truevarresult=x1&&x2;//結(jié)果是false邏輯與運(yùn)算符的返回值不一定是布爾值,如果其中某個(gè)條件的返回值不是布爾值,有可能出現(xiàn)其他返回值。邏輯非的運(yùn)算規(guī)則如表3-17所示。3.4.3邏輯運(yùn)算符3.邏輯或運(yùn)算符(OR)在JavaScript中,邏輯或運(yùn)算符使用雙豎線符號(hào)(||)表示,用于連接符號(hào)前后的兩個(gè)條件判斷,表示二選一的關(guān)系。當(dāng)兩個(gè)條件均為布爾值時(shí),邏輯或的運(yùn)算結(jié)果也是布爾值(true或者false)。判斷結(jié)果如表所示。3.4.3邏輯運(yùn)算符3.邏輯或運(yùn)算符(OR)還有一種特殊情況:當(dāng)條件1為真(true)時(shí),無(wú)論條件2是任何內(nèi)容(例如null值、undefined、數(shù)字、對(duì)象等),最終返回值都是真(true)。原因是邏輯或也具有簡(jiǎn)便運(yùn)算的特性,即如果第一個(gè)條件為真(true)的話,直接判斷邏輯或的運(yùn)行結(jié)果為真(true),不再執(zhí)行第二個(gè)條件。例如:varx1=true;varresult=x1||x2;//因?yàn)閤1為true,可以忽略x2直接判斷最終結(jié)果alert(result);//該語(yǔ)句執(zhí)行結(jié)果為true由于條件1為真(true),邏輯或會(huì)直接判定最終結(jié)果為真(true),直接忽略條件2。因此即使本例中條件2的變量未聲明都不影響代碼的運(yùn)行。3.4.3邏輯運(yùn)算符3.邏輯或運(yùn)算符(OR)和邏輯與運(yùn)算符類似,如果存在某個(gè)條件是數(shù)字類型,則先將其轉(zhuǎn)換為布爾值再繼續(xù)判斷。其中數(shù)字0對(duì)應(yīng)的是假(false),其他非0的數(shù)字對(duì)應(yīng)的都是真(true)。例如:varx1=0;//對(duì)應(yīng)的是falsevarx2=99;//對(duì)應(yīng)的是truevarresult=x1||x2;//結(jié)果是true邏輯或運(yùn)算符的返回值同樣不一定是布爾值,如果其中某個(gè)條件的返回值不是布爾值,有可能出現(xiàn)其他返回值。邏輯非的運(yùn)算規(guī)則如表4-23所示。3.4.4關(guān)系運(yùn)算符在JavaScript中,關(guān)系運(yùn)算符共有四種:大于(>)、小于(<)、大于等于(>=)和小于等于(<=)。用于比較兩個(gè)值的大小,返回值一定是布爾值(true或false)。3.4.4關(guān)系運(yùn)算符1.數(shù)字之間的比較數(shù)字之間的比較完全依據(jù)數(shù)學(xué)中比大小的規(guī)律,當(dāng)條件成立時(shí)返回真(true),否則返回假(false)。例如:varresult1=99>0;//符合數(shù)學(xué)規(guī)律,返回truevarresult2=1<100;//不符合數(shù)學(xué)規(guī)律,返回false此時(shí)只要兩個(gè)運(yùn)算數(shù)都是數(shù)字即可,整數(shù)或小數(shù)都可以依據(jù)此規(guī)律進(jìn)行比較并且返回對(duì)應(yīng)的布爾值。3.4.4關(guān)系運(yùn)算符2.字符串之間的比較當(dāng)兩個(gè)字符串進(jìn)行比大小時(shí),是按照從左往右的順序依次比較相同位置上的字符,如果字符完全一樣則繼續(xù)比較下一個(gè)。如果兩個(gè)字符串在相同位置上都是數(shù)字則仍然按照數(shù)學(xué)上的大小進(jìn)行比較。例如:varx1="9";varx2="1";varresult=x1>x2;//返回true此時(shí)從數(shù)學(xué)概念上來(lái)說(shuō),9大于1,因此返回值是真(true)。3.4.4關(guān)系運(yùn)算符2.字符串之間的比較但是如果兩個(gè)數(shù)字的位數(shù)不一樣,仍然只對(duì)相同位置上的數(shù)字進(jìn)行比大小,不按照數(shù)學(xué)概念看整體數(shù)值大小。例如:varx1="9";varx2="10";varresult=x1>x2;//返回true此時(shí)雖然從數(shù)學(xué)概念上來(lái)說(shuō)10應(yīng)該大于9,但是由于字符串同位置比較原則,此時(shí)比較的是變量x1中的9和變量x2中的1,得出結(jié)論9大于1,因此返回值仍然是真(true)。3.4.4關(guān)系運(yùn)算符2.字符串之間的比較由于JavaScript是一種大小寫(xiě)敏感的程序語(yǔ)言,所以如果相同位置上的字符大小寫(xiě)不同就可以直接作出判斷,因?yàn)榇髮?xiě)字母的代碼小于小寫(xiě)字母的代碼。例如:varx1="hello";varx2="HELLO";varresult=x1>x2;//返回true3.4.4關(guān)系運(yùn)算符2.字符串之間的比較如果大小寫(xiě)相同,則按照字母表的順序進(jìn)行比較,字母越往后越大。例如:varx1="hello";varx2="world";varresult=x1>x2;//返回false在上述示例中,同樣按照從左往右的順序先比較兩個(gè)字符串的第一個(gè)字符,即變量x1中的h和變量x2中的w。按照字母表的順序h在先w在后。因此返回值是假(false)。此時(shí)已判斷出結(jié)果因此不再繼續(xù)比較后續(xù)的字符。3.4.4關(guān)系運(yùn)算符2.字符串之間的比較如果不希望兩個(gè)字符串之間的比較受到大小寫(xiě)字母的干擾,而是無(wú)論大小寫(xiě)都按照字母表順序進(jìn)行比大小,可以將所有字母都轉(zhuǎn)換為小寫(xiě)或大寫(xiě)的形式,再進(jìn)行大小的比較。使用方法toLowerCase()可以將所有字母轉(zhuǎn)換為小寫(xiě)形式,例如:varx1="ball";varx2="CAT";varresult1=x1>x2;//返回truevarresult2=x1.toLowerCase()>x2.toLowerCase();//返回false3.4.4關(guān)系運(yùn)算符2.字符串之間的比較使用方法toUpperCase()可以將所有字母轉(zhuǎn)換為大寫(xiě)形式,例如:varx1="ball";varx2="CAT";varresult1=x1>x2;//返回truevarresult2=x1.toUpperCase()>x2.toUpperCase();//返回false本示例使用了toUpperCase()將所有字母轉(zhuǎn)換為大寫(xiě)再進(jìn)行比較,效果與之前使用方法toLowerCase()將所有字母轉(zhuǎn)換為小寫(xiě)的原理相同,不再贅述。3.4.5相等性運(yùn)算符在JavaScript中,相等性運(yùn)算符共有四種:等于(==)、非等于(!=)、全等于(===)。和非全等于(!==)。用于判斷兩個(gè)值是否相等,返回值一定是布爾值(true或false)。3.4.5相等性運(yùn)算符1.等于和非等于運(yùn)算符在JavaScript中,判斷兩個(gè)數(shù)值是否相等用雙等于符號(hào)(==)表示,只有兩個(gè)數(shù)值完全相等時(shí)返回真(true);判斷兩個(gè)數(shù)值是否不相等使用感嘆號(hào)加等于號(hào)(!=)表示,在兩個(gè)數(shù)值不一樣的情況下返回真(true)。在使用等于或非等于運(yùn)算符進(jìn)行比較時(shí),如果兩個(gè)值均為數(shù)字類型,則直接進(jìn)行數(shù)學(xué)邏輯上的比較判斷是否相等。例如:varx1=100;varx2=99;alert(x1==x2);//返回false3.4.5相等性運(yùn)算符1.等于和非等于運(yùn)算符若需要進(jìn)行比較的數(shù)據(jù)存在其他數(shù)據(jù)類型(例如字符串、布爾值等),要先將運(yùn)算符前后的內(nèi)容嘗試轉(zhuǎn)換為數(shù)字再進(jìn)行比較判斷。轉(zhuǎn)換規(guī)則如表所示。3.4.5相等性運(yùn)算符1.等于和非等于運(yùn)算符在進(jìn)行了數(shù)據(jù)類型轉(zhuǎn)換后仍然不是數(shù)字類型的特殊情況判斷規(guī)則如表所示。3.4.5相等性運(yùn)算符2.全等于和非全等于運(yùn)算符全等號(hào)由三個(gè)連續(xù)的等號(hào)組成(===)也是用于判斷兩個(gè)數(shù)值是否相同,作用和雙等號(hào)(==)類似,但全等號(hào)更加嚴(yán)格,在執(zhí)行判斷前不進(jìn)行任何類型轉(zhuǎn)換,兩個(gè)數(shù)值必須數(shù)據(jù)類型相同并且內(nèi)容也相同才返回真(true)。例如:varx1=100;varx2="100";varresult1=(x1==x2);//返回truevarresult2=(x1===x2);//返回false3.4.5相等性運(yùn)算符2.全等于和非全等于運(yùn)算符非全等號(hào)由感嘆號(hào)和兩個(gè)連續(xù)的等號(hào)組成(!==),用于判斷兩個(gè)數(shù)值是否不同。有兩種情況返回真(true):一是兩個(gè)數(shù)值的數(shù)據(jù)類型不相同;二是兩個(gè)數(shù)值雖然數(shù)據(jù)類型一樣,但是內(nèi)容不相同。其他情況均返回假(false)。繼續(xù)使用上一個(gè)示例中的變量x1和x2進(jìn)行判斷非全等,代碼如下:varx1=100;varx2="100";varresult1=(x1!=x2);//返回falsevarresult2=(x1!==x2);//返回true3.4.6條件運(yùn)算符JavaScript中的條件運(yùn)算符語(yǔ)法與Java語(yǔ)言相同,語(yǔ)法格式如下:變量=布爾表達(dá)式條件?結(jié)果1:結(jié)果2該格式使用問(wèn)號(hào)(?)標(biāo)記前面的內(nèi)容為條件表達(dá)式,返回值以布爾值的形式出現(xiàn)。問(wèn)號(hào)后面是兩種不同的選擇結(jié)果,使用冒號(hào)(:)將其隔開(kāi),如果條件為真則把結(jié)果1賦值給變量,否則把結(jié)果2賦值給變量。3.4.6條件運(yùn)算符例如使用條件運(yùn)算符進(jìn)行數(shù)字比大小,代碼如下:varx1=5;varx2=9;varresult=(x1>x2)?x1:x2;本例中變量result將被賦予變量x1和x2中的最大值。表達(dá)式判斷x1是否大于x2,如果為真則把x1賦值給result,否則把x2賦值給result。顯然x1>x2的返回值是false,因此變量result最終會(huì)被賦值成x2的值,最終答案為9。3.5

階段案例:生肖計(jì)算3.5.1案例需求 3.5.2案例分析 3.5.3案例制作 3.5.4案例思考 3.5.1案例需求制作一款可以根據(jù)輸入的4位數(shù)年份自動(dòng)計(jì)算當(dāng)年生肖的小應(yīng)用,例如輸入“2023”會(huì)得到提示“2023年是兔年”。3.5.2案例分析因?yàn)樯ひ还灿?2個(gè),可以嘗試求年份與12的余數(shù),會(huì)發(fā)現(xiàn)相同余數(shù)的年份其生肖也是相同的,例如余數(shù)是6的都是虎年,余數(shù)是8的則都是龍年。那么把生肖按照從余數(shù)是0一直到11的順序排列出來(lái)的數(shù)組就是:["猴","雞","狗","豬","鼠","牛","虎","兔","龍","蛇","馬","羊"],根據(jù)余數(shù)和數(shù)組下標(biāo)完全對(duì)應(yīng)關(guān)系就能很快判斷出輸入年份對(duì)應(yīng)的生肖了。3.5.3案例制作創(chuàng)建一個(gè)HTML文件,文件名可自定義,例如ChineseZodiac.html。 //生肖數(shù)組 varshengxiao=["猴","雞","狗","豬","鼠","牛","虎","兔","龍","蛇","馬","羊"]; //獲取輸入的年份 varmyYear=prompt("請(qǐng)輸入您要計(jì)算生肖的4位數(shù)年份",""); //生肖計(jì)算(秘訣:求年份和12的余數(shù)看是數(shù)組里面第幾個(gè)下標(biāo)) vari=myYear%12; //顯示結(jié)果 alert(myYear+"年是"+shengxiao[i]+"年");3.5.4案例思考【拓展練習(xí)】是否可以根據(jù)輸入的月份和日期計(jì)算星座?十二個(gè)星座的日期范圍如下:【進(jìn)階改造】由于當(dāng)前尚未學(xué)習(xí)if語(yǔ)句,因此暫時(shí)不考慮玩家惡意輸入非數(shù)字或者不是4位的年份數(shù)字等特殊情況,請(qǐng)學(xué)完第4章后考慮如何優(yōu)化改良本案例。水瓶座1.20-2.18雙魚(yú)座2.19-3.20白羊座3.21-4.19金牛座4.20-5.20雙子座5.21-6.21巨蟹座6.22-7.22獅子座7.23-8.22處女座8.23-9.22天秤座9.23-10.23天蝎座10.24-11.22射手座11.23-12.21魔羯座12.22-1.19本章小結(jié)本章小結(jié)本章首先介紹了JavaScript的基本數(shù)據(jù)類型,包括Undefined、Null、String、Number和Boolean類型。其次介紹了JavaScript的三種對(duì)象類型,分別是本地對(duì)象、內(nèi)置對(duì)象和宿主對(duì)象。然后講解了JavaScript不同類型之間的轉(zhuǎn)換方法,包括轉(zhuǎn)換成字符串、數(shù)字和強(qiáng)制類型轉(zhuǎn)換。最后在JavaScript運(yùn)算符部分,根據(jù)運(yùn)算符的功能不同分別介紹了賦值運(yùn)算符、算術(shù)運(yùn)算符、邏輯運(yùn)算符、關(guān)系運(yùn)算符、相等性運(yùn)算符以及條件運(yùn)算符。本章階段案例介紹了生肖計(jì)算,用戶輸入4位年份數(shù)字就可以顯示對(duì)應(yīng)的生肖。Thankyou!JavaScript與jQuery

網(wǎng)頁(yè)前端開(kāi)發(fā)與設(shè)計(jì)-第2版學(xué)校名稱:XXXX主講教師:XXXX第4章JavaScript語(yǔ)句和函數(shù)本章學(xué)習(xí)目標(biāo) 掌握J(rèn)avaScript條件語(yǔ)句的用法; 掌握J(rèn)avaScript循環(huán)語(yǔ)句的用法; 掌握J(rèn)avaScript函數(shù)的使用。目錄4.1JavaScript條件語(yǔ)句4.2JavaScript循環(huán)語(yǔ)句4.3JavaScript函數(shù)4.4階段案例:猜數(shù)字小游戲4.1JavaScript條件語(yǔ)句4.1.1if語(yǔ)句4.1.2switch語(yǔ)句4.1.1if語(yǔ)句在各類計(jì)算機(jī)程序語(yǔ)言中,最常見(jiàn)的條件語(yǔ)句就是if語(yǔ)句。1.if語(yǔ)句2.ifelse語(yǔ)句3.ifelse-ifelse語(yǔ)句4.1.1if語(yǔ)句1.if語(yǔ)句最簡(jiǎn)單的if語(yǔ)句由單個(gè)條件組成,語(yǔ)法規(guī)則如下:例如判斷成績(jī)等級(jí),如果高于90分彈出對(duì)話框提示為Excellent,代碼如下:if(條件){

條件為真(true)時(shí)執(zhí)行的代碼}varscore=99;if

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論