版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、typeof 運算符typeof 運算符有一個參數(shù),即要檢查的變量或值 alert (typeof sTemp);對變量或值調用 typeof 運算符將返回下列值之一:undefined - 如果變量是 Undefined 類型的boolean - 如果變量是 Boolean 類型的number - 如果變量是 Number 類型的string - 如果變量是 String 類型的object - 如果變量是一種引用類型或 Null 類型的注釋:您也許會問,為什么 typeof 運算符對于 null 值會返回 "Object"。這實際上是 JavaScript 最初實現(xiàn)中的
2、一個錯誤,然后被 ECMAScript 沿用了?,F(xiàn)在,null 被認為是對象的占位符,從而解釋了這一矛盾,但從技術上來說,它仍然是原始值。Undefined 類型當聲明的變量未初始化時,該變量的默認值是 undefined。undefined 是聲明了變量但未對其初始化時賦予該變量的值Null 類型null 則用于表示尚未存在的對象Boolean 類型Boolean 類型是 ECMAScript 中最常用的類型之一。它有兩個值 true 和 false (即兩個 Boolean 字面量)Number 類型直接輸入的(而不是從另一個變量訪問的)任何數(shù)字都被看做 Number 類型的字面量。Str
3、ing 類型字符串字面量是由雙引號(")或單引號(')聲明的。toString() 方法3 種主要的原始類型 Boolean 值、數(shù)字和字符串都有 toString() 方法,可以把它們的值轉換成字符串。Boolean 類型的 toString() 方法只是輸出 "true" 或 "false"對數(shù)字調用 toString(10) 與調用 toString() 相同,它們返回的都是該數(shù)字的十進制形式。parseFloat()parseFloat() 方法與 parseInt() 方法的處理方式相似,從位置 0 開始查看每個字符,直到找到
4、第一個非有效的字符為止,然后把該字符之前的字符串轉換成整數(shù)。不過,對于這個方法來說,第一個出現(xiàn)的小數(shù)點是有效字符。如果有兩個小數(shù)點,第二個小數(shù)點將被看作無效的。parseFloat() 會把這個小數(shù)點之前的字符轉換成數(shù)字。這意味著字符串 "11.22.33" 將被解析成 11.22。使用 parseFloat() 方法的另一不同之處在于,字符串必須以十進制形式表示浮點數(shù),而不是用八進制或十六進制。該方法會忽略前導 0,所以八進制數(shù) 0102 將被解析為 102。對于十六進制數(shù) 0xA,該方法將返回 NaN,因為在浮點數(shù)中,x 不是有效字符。(注釋:經(jīng)測試,具體的瀏覽器實現(xiàn)會
5、返回 0,而不是 NaN。)此外,parseFloat() 方法也沒有基模式。下面是使用 parseFloat() 方法的一些示例:var fNum1 = parseFloat("12345red");/返回 12345var fNum2 = parseFloat("0xA");/返回 NaNvar fNum3 = parseFloat("11.2");/返回 11.2var fNum4 = parseFloat("11.22.33");/返回 11.22var fNum5 = parseFloat("0
6、102");/返回 102var fNum1 = parseFloat("red");/返回 NaN強制類型轉換ECMAScript 中可用的 3 種強制類型轉換如下:Boolean(value) - 把給定的值轉換成 Boolean 型;當要轉換的值是至少有一個字符的字符串、非 0 數(shù)字或對象時,Boolean() 函數(shù)將返回 true。如果該值是空字符串、數(shù)字 0、undefined 或 null,它將返回 false??梢杂孟旅娴拇a測試 Boolean 型的強制類型轉換:var b1 = Boolean("");/false - 空字符
7、串var b2 = Boolean("hello");/true - 非空字符串var b1 = Boolean(50);/true - 非零數(shù)字var b1 = Boolean(null);/false - nullvar b1 = Boolean(0);/false - 零var b1 = Boolean(new object();/true - 對象Number(value) - 把給定的值轉換成數(shù)字(可以是整數(shù)或浮點數(shù));Number() 函數(shù)的強制類型轉換與 parseInt() 和 parseFloat() 方法的處理方式相似,只是它轉換的是整個值,而不是部分值
8、。還記得嗎,parseInt() 和 parseFloat() 方法只轉換第一個無效字符之前的字符串,因此 "1.2.3" 將分別被轉換為 "1" 和 "1.2"。用 Number() 進行強制類型轉換,"1.2.3" 將返回 NaN,因為整個字符串值不能轉換成數(shù)字。如果字符串值能被完整地轉換,Number() 將判斷是調用 parseInt() 方法還是 parseFloat() 方法。下表說明了對不同的值調用 Number() 方法會發(fā)生的情況:用法結果Number(false)0Number(true)1Nu
9、mber(undefined)NaNNumber(null)0Number("1.2")1.2Number("12")12Number("1.2.3")NaNNumber(new object()NaNNumber(50)50String(value) - 把給定的值轉換成字符串;最后一種強制類型轉換方法 String() 是最簡單的,因為它可把任何值轉換成字符串。要執(zhí)行這種強制類型轉換,只需要調用作為參數(shù)傳遞進來的值的 toString() 方法,即把 12 轉換成 "12",把 true 轉換成 "t
10、rue",把 false 轉換成 "false",以此類推。強制轉換成字符串和調用 toString() 方法的唯一不同之處在于,對 null 和 undefined 值強制類型轉換可以生成字符串而不引發(fā)錯誤:var s1 = String(null);/"null"var oNull = null;var s2 = oNull.toString();/會引發(fā)錯誤toFixed() 方法toFixed() 方法返回的是具有指定位數(shù)小數(shù)的數(shù)字的字符串表示。例如:var oNumberObject = new Number(68);alert(oN
11、umberObject.toFixed(2); /輸出 "68.00"toFixed() 方法能表示具有 0 到 20 位小數(shù)的數(shù)字,超過這個范圍的值會引發(fā)錯誤。toExponential() 方法與格式化數(shù)字相關的另一個方法是 toExponential(),它返回的是用科學計數(shù)法表示的數(shù)字的字符串形式。與 toFixed() 方法相似,toExponential() 方法也有一個參數(shù),指定要輸出的小數(shù)的位數(shù)。例如:var oNumberObject = new Number(68);alert(oNumberObject.toExponential(1); /輸出 &q
12、uot;6.8e+1"這段代碼的結果是 "6.8e+1",前面解釋過,它表示 6.8x101。問題是,如果不知道要用哪種形式(預定形式或指數(shù)形式)表示數(shù)字怎么辦?可以用 toPrecision() 方法。toPrecision() 方法toPrecision() 方法根據(jù)最有意義的形式來返回數(shù)字的預定形式或指數(shù)形式。它有一個參數(shù),即用于表示數(shù)的數(shù)字總數(shù)(不包括指數(shù))。例如,var oNumberObject = new Number(68);alert(oNumberObject.toPrecision(1); /輸出 "7e+1"這段代碼的任
13、務是用一位數(shù)字表示數(shù)字 68,結果為 "7e+1",以另外的形式表示即 70。的確,toPrecision() 方法會對數(shù)進行舍入。不過,如果用 2 位數(shù)字表示 68,就容易多了:var oNumberObject = new Number(68);alert(oNumberObject.toPrecision(2); /輸出 "68"當然,輸出的是 "68",因為這正是該數(shù)的準確表示。不過,如果指定的位數(shù)多于需要的位數(shù)又如何呢?var oNumberObject = new Number(68);alert(oNumberObjec
14、t.toPrecision(3); /輸出 "68.0"在這種情況下,toPrecision(3) 等價于 toFixed(1),輸出的是 "68.0"。toFixed()、toExponential() 和 toPrecision() 方法都會進行舍入操作,以便用正確的小數(shù)位數(shù)正確地表示一個數(shù)。charAt() 方法charAt() 方法返回的是包含指定位置處的字符的字符串:var oStringObject = new String("hello world");alert(oStringObject.charAt(1);/輸出
15、"e"charCodeAt() 方法如果想得到的不是字符,而是字符代碼,那么可以調用 charCodeAt() 方法:var oStringObject = new String("hello world");alert(oStringObject.charCodeAt(1);/輸出 "101"這個例子輸出 "101",即小寫字母 "e" 的字符代碼。concat() 方法接下來是 concat() 方法,用于把一個或多個字符串連接到 String 對象的原始值上。該方法返回的是 String
16、原始值,保持原始的 String 對象不變:var oStringObject = new String("hello ");var sResult = oStringObject.concat("world");alert(sResult);/輸出 "hello world"alert(oStringObject);/輸出 "hello "在上面這段代碼中,調用 concat() 方法返回的是 "hello world",而 String 對象存放的仍然是 "hello "
17、。出于這種原因,較常見的是用加號(+)連接字符串,因為這種形式從邏輯上表明了真正的行為:var oStringObject = new String("hello ");var sResult = oStringObject + "world"alert(sResult);/輸出 "hello world"alert(oStringObject);/輸出 "hello "回的是 "hello world",而 String 對象存放的仍然是 "hello "。出于這種原因,較
18、常見的是用加號(+)連接字符串,因為這種形式從邏輯上表明了真正的行為:var oStringObject = new String("hello ");var sResult = oStringObject + "world"alert(sResult);/輸出 "hello world"alert(oStringObject);/輸出 "hello "indexOf() 和 lastIndexOf() 方法indexOf() 和 lastIndexOf() 方法返回的都是指定的子串在另一個字符串中的位置,如果沒有
19、找不到子串,則返回 -1。這兩個方法的不同之處在于,indexOf() 方法是從字符串的開頭(位置 0)開始檢索字符串,而 lastIndexOf() 方法則是從字符串的結尾開始檢索子串。例如:var oStringObject = new String("hello world!");alert(oStringObject.indexOf("o");輸出 "4"alert(oStringObject.lastIndexOf("o");輸出 "7"localeCompare() 方法下一個方法是
20、 localeCompare(),對字符串進行排序。該方法有一個參數(shù) - 要進行比較的字符串,返回的是下列三個值之一:如果 String 對象按照字母順序排在參數(shù)中的字符串之前,返回負數(shù)。如果 String 對象等于參數(shù)中的字符串,返回 0如果 String 對象按照字母順序排在參數(shù)中的字符串之后,返回正數(shù)。注釋:如果返回負數(shù),那么最常見的是 -1,不過真正返回的是由實現(xiàn)決定的。如果返回正數(shù),那么同樣的,最常見的是 1,不過真正返回的是由實現(xiàn)決定的。示例如下:var oStringObject = new String("yellow");alert(oStringObje
21、ct.localeCompare("brick");/輸出 "1"alert(oStringObject.localeCompare("yellow");/輸出 "0"alert(oStringObject.localeCompare("zoo");/輸出 "-1"在這段代碼中,字符串 "yellow" 與 3 個值進行了對比,即 "brick"、"yellow" 和 "zoo"。由于按照字母順序
22、排列,"yellow" 位于 "brick" 之后,所以 localeCompare() 返回 1;"yellow" 等于 "yellow",所以 localeCompare() 返回 0;"zoo" 位于 "yellow" 之后,localeCompare() 返回 -1。再強調一次,由于返回的值是由實現(xiàn)決定的,所以最好以下面的方式調用 localeCompare() 方法:var oStringObject1 = new String("yellow"
23、);var oStringObject2 = new String("brick");var iResult = oStringObject1.localeCompare(oStringObject2);if(iResult < 0) alert(oStringObject1 + " comes before " + oStringObject2); else if (iResult > 0) alert(oStringObject1 + " comes after " + oStringObject2); else al
24、ert("The two strings are equal");采用這種結構,可以確保這段代碼在所有實現(xiàn)中都能正確運行。localeCompare() 方法的獨特之處在于,實現(xiàn)所處的區(qū)域(locale,兼指國家/地區(qū)和語言)確切說明了這種方法運行的方式。在美國,英語是 ECMAScript 實現(xiàn)的標準語言,localeCompare() 是區(qū)分大小寫的,大寫字母在字母順序上排在小寫字母之后。不過,在其他區(qū)域,情況可能并非如此。slice() 和 substring()ECMAScript 提供了兩種方法從子串創(chuàng)建字符串值,即 slice() 和 substring()。這
25、兩種方法返回的都是要處理的字符串的子串,都接受一個或兩個參數(shù)。第一個參數(shù)是要獲取的子串的起始位置,第二個參數(shù)(如果使用的話)是要獲取子串終止前的位置(也就是說,獲取終止位置處的字符不包括在返回的值內)。如果省略第二個參數(shù),終止位就默認為字符串的長度。與 concat() 方法一樣,slice() 和 substring() 方法都不改變 String 對象自身的值。它們只返回原始的 String 值,保持 String 對象不變。var oStringObject = new String("hello world");alert(oStringObject.slice(&
26、quot;3");/輸出 "lo world"alert(oStringObject.substring("3");/輸出 "lo world"alert(oStringObject.slice("3", "7");/輸出 "lo w"alert(oStringObject.substring("3", "7");/輸出 "lo w"在這個例子中,slice() 和 substring() 的用法相同,返回
27、值也一樣。當只有參數(shù) 3 時,兩個方法返回的都是 "lo world",因為 "hello" 中的第二個 "l" 位于位置 3 上。當有兩個參數(shù) "3" 和 "7" 時,兩個方法返回的值都是 "lo w"("world" 中的字母 "o" 位于位置 7 上,所以它不包括在結果中)。為什么有兩個功能完全相同的方法呢?事實上,這兩個方法并不完全相同,不過只在參數(shù)為負數(shù)時,它們處理參數(shù)的方式才稍有不同。對于負數(shù)參數(shù),slice() 方法會用字
28、符串的長度加上參數(shù),substring() 方法則將其作為 0 處理(也就是說將忽略它)。例如:var oStringObject = new String("hello world");alert(oStringObject.slice("-3");/輸出 "rld"alert(oStringObject.substring("-3");/輸出 "hello world"alert(oStringObject.slice("3, -4");/輸出 "lo w&qu
29、ot;alert(oStringObject.substring("3, -4");/輸出 "hel"這樣即可看出 slice() 和 substring() 方法的主要不同。當只有參數(shù) -3 時,slice() 返回 "rld",substring() 則返回 "hello world"。這是因為對于字符串 "hello world",slice("-3") 將被轉換成 slice("8"),而 substring("-3") 將被轉
30、換成 substring("0")。同樣,使用參數(shù) 3 和 -4 時,差別也很明顯。slice() 將被轉換成 slice(3, 7),與前面的例子相同,返回 "lo w"。而 substring() 方法則將兩個參數(shù)解釋為 substring(3, 0),實際上即 substring(0, 3),因為 substring() 總把較小的數(shù)字作為起始位,較大的數(shù)字作為終止位。因此,substring("3, -4") 返回的是 "hel"。這里的最后一行代碼用來說明如何使用這些方法。toLowerCase()、to
31、LocaleLowerCase()、toUpperCase() 和 toLocaleUpperCase()最后一套要討論的方法涉及大小寫轉換。有 4 種方法用于執(zhí)行大小寫轉換,即toLowerCase()toLocaleLowerCase()toUpperCase()toLocaleUpperCase()從名字上可以看出它們的用途,前兩種方法用于把字符串轉換成全小寫的,后兩種方法用于把字符串轉換成全大寫的。toLowerCase() 和 toUpperCase() 方法是原始的,是以 java.lang.String 中相同方法為原型實現(xiàn)的。toLocaleLowerCase() 和 toLocaleUpperCase() 方法是基于特定的區(qū)域實現(xiàn)的(與 localeCompare() 方法相同)。在許多區(qū)域中,區(qū)域特定的方法都與通用的方法完全相同。不過,有幾種語言對 Unicode 大小寫轉換應用了特定的規(guī)則(例如土耳其語),因此必須使用區(qū)域特定的方法才能進行正確的轉換。var
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 甲苯精餾塔課程設計結論
- 網(wǎng)絡營銷微信課程設計
- 醫(yī)院設備管理制度
- 波浪能發(fā)電裝置課程設計
- 舞蹈機構古典舞課程設計
- 用天正暖通進行課程設計
- 會計師工作總結細心核算確保賬目準確無誤
- 數(shù)字時代品牌營銷的新趨勢計劃
- 日常教學反思與總結計劃
- 裝修合同簡易版
- 通力電梯KCE電氣系統(tǒng)學習指南
- 風電場崗位任職資格考試題庫大全-下(填空題2-2)
- 九年級數(shù)學特長生選拔考試試題
- 幼兒園交通安全宣傳課件PPT
- 門窗施工組織設計與方案
- 健身健美(課堂PPT)
- (完整版)財務管理學課后習題答案-人大版
- 錨索試驗總結(共11頁)
- 移動腳手架安全交底
- 人教版“課標”教材《統(tǒng)計與概率》教學內容、具體目標和要求
- 矩形鋼板水箱的設計與計算
評論
0/150
提交評論