亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > WEB開發 > 正文

JavaScript 數據類型詳解

2024-04-27 15:08:13
字體:
來源:轉載
供稿:網友

——跟我一起學 javaScript (5)

ECMAScript 定義了 5 種簡單數據類型(Undefined、Null、Boolean、Number、String)和一種復雜數據類型(Object),后續會分別進行說明。

1 typeof 操作符

typeof 用于檢測給定變量的數據類型。

變量值類型 typeof 返回值
未定義 undefined
布爾值 boolean
字符串 string
數值 number
對象或者 null object
函數 function
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>typeof 操作符</title></head><body><script type="text/Javascript"> var message = "some string"; // typeof 是操作符,因此此例中的圓括號不是必須的 alert(typeof message);//"string" alert(typeof (message));//"string" alert(typeof 95);//"number"</script></body></html>typeof 操作符的操作數可以是變量或者是數值字面量。typeof null 會返回 “object”,因為特殊值 null 被認為是一個空的對象引用。

2 undefined 類型

未經過初始化的值默認會取得 undefined 值。包含 undefined 值的變量與尚未定義的變量不一樣,尚未定義的變量傳遞給函數會導致錯誤——<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>沒有聲明的變量會產生錯誤</title></head><body><script type="text/javascript"> var message;//變量聲明后會取得 undefined 值 // var age 這個變量沒有聲明 alert(message);//"undefined" alert(age);//產生錯誤</script></body></html>未初始化的變量以及未聲明的變量執行 typeof 后都會返回 undefined 值,所以顯式地初始化變量是明智的,因為這樣做之后,當執行 typeof 返回 undefined 時,我們就知道這個變量是還沒有被聲明——<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>對未初始化和未聲明的變量執行 typeof 操作,都會返回 undefined</title></head><body><script type="text/javascript"> var message;//變量聲明后會取得 undefined 值 // var age 這個變量沒有聲明 alert(typeof message);//"undefined" alert(typeof age);//"undefined"</script></body></html>

3 Null 類型

Null 類型是只有一個特殊值的數據類型(null)。從邏輯角度看,null 值表示一個空對象指針——<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>null 值表示一個空對象指針(邏輯角度)</title></head><body><script type="text/javascript"> var car = null; alert(typeof car);//"object"</script></body></html>如果定義的變量未來需要用于保存對象,那么請把這個變量初始化為 null,這樣只要檢查 null 值就能夠判斷這個變量是否已經保存了一個對象的引用。而且也有助于進一步區分 null 和 undefined。undefined 值是派生自 null,因此它們是相等的(==)。

4 Boolean 類型

這個類型有兩個字面值:true 和 false(區分大小寫)。ECMAScript 中所有類型的值都有與上面的兩個字面值等價的值??墒褂棉D型函數 Boolean() ——<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>ECMAScript 中定義的所有類型的值都可以轉換為 Boolean 值</title></head><body><script type="text/javascript"> var message = "Hello world!"; var messageAsBoolean = Boolean(message); alert(messageAsBoolean);</script></body></html>轉換規則——
數據類型 轉換為 true 轉換為 false
Boolean true false
String 非空字符串 空字符串 ”
Number 非零數字(包括無窮大) 0 或 NaN
Object 對象 null
Undefined undefined
這些規則對理解流控制語句的自動執行 Boolean 轉換來說,很重要——<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>Boolean 的轉換規則對理解流控制語句相當重要</title></head><body><script type="text/javascript"> var message = "Hello world!"; if (message) { alert("Value is true"); }</script></body></html>

5 Number 類型

使用 IEEE754 格式來表示整數和浮點數??梢员硎臼M制、八進制或十六進制數。在進行算術運算時,所有的八進制或十六進制數最終被轉換成十進制數??梢员4鏀抵禐檎悖?0)或負零(-0),它們是相等的。

5.1 浮點數

數值中包含一個小數點,小數點后面至少有一位數字。因為保存浮點數對內存空間的要求是整數的兩倍,所以 ECMAScript 會這某些情況下的浮點數轉換為整數——var float1 = 1.;//1var float2 = 10.0;//10對于極大或者極小數,可以用科學計數法(e 表示法)——var floatNum = 3.327e8;//332700000默認情況下,ECMAScript 會將小數點后面帶有 6 個零以上的浮點數轉換為科學計數法。浮點數的最高精度是 17 位小數,但在進行算術運算時的精確度遠遠不如整數,所以永遠不要判斷某個特定浮點數的值(這種舍入誤差是 IEEE754 數值浮點計算的通?。?lt;!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>進行算術運算時的精確度遠遠不如整數</title></head><body><script type="text/javascript"> var a = 0.1, b = 0.2; console.log(a+b);//0.30000000000000004</script></body></html>

5.2 數值范圍

最小數值在 Number.MIN_VALUE 中(5e-324)。最大數值在 Number.MAX_VALUE 中(1.7976931348623157e+308)。如果某次計算結果超過了上面的范圍,那么數值會被轉換為特殊的 Infinity 值(正負無窮),而且無法繼續參與下一次計算。在執行極大或極小值的計算時,使用 isFinite() 函數進行監控是必要的。

5.3 NaN

非數值(Not a Number)任何涉及 NaN 的操作都會返回 NaN。NaN 與任何值都不相等,包括 NaN。isNaN 函數可以判斷這個參數是否 “不是數值”——<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>NaN(Not a Number) 非數值</title></head><body><script type="text/javascript"> alert(NaN == NaN); //false alert(isNaN(NaN)); //true alert(isNaN(10)); //false(10 是數值) alert(isNaN("10")); //false(可以被轉換成數值 10) alert(isNaN("blue"));//true(不能轉換為數值) alert(isNaN(true));//false (可以被轉換成數值 1)</script></body></html>NaN 也適用于對象。它會首先調用對象的 valueOf() 方法,然后確定該方法的返回值是否可以轉換為數值。如果不能,就基于這個返回值調用 toString() 方法,在測試返回值。

5.4 數值轉換

5.4.1 Number() 函數

轉換規則:

傳入的參數類型 返回
Boolean true 和 false 分別被轉換為 1 和 0
數字 返回傳入的數字
null 0
undefined NaN
字符串 后面單獨說明
對象 調用 valueOf 方法,再按前面的規則轉換返回的值。如果轉換結果是 NaN,則調用 toString 方法,再按前面的規則轉換返回的值

傳入的參數類型是字符串的情況比較復雜,這里單獨說明:

字符串格式 返回
只包含數字(包括帶正負號的情況) 轉換為十進制數值
有效浮點格式 轉換為對應的浮點格式
有效的十六進制格式 轉換為十進制數
空字符串 0
包含上述格式之外的字符 NaN
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>Number 函數(非數值轉換為數值)</title></head><body><script type="text/javascript"> console.info(Number("Hello World!"));//NaN console.info(Number(""));//0 console.info(Number("000011"));//11 console.info(Number(true));//1</script></body></html>

5.4.2 parseInt() 函數

因為 Number() 函數在轉換字符串時較復雜而且不夠合理,所在在處理整數時,更常用的是 parseInt() 函數。parseInt 會忽略字符串前面的空格,直接從第一個非空格字符開始判斷。能夠識別各種整數格式(十進制、八進制和十六進制)。

轉換規則:

傳入的參數類型 返回
第一個非空格字符不是數字字符或者負號 NaN
空字符串 NaN
第一個非空格字符是數字字符 會繼續解析,直到解析完或者遇到一個非數字字符
這個函數提供第二個參數:轉換時使用的進制類型——<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>parseInt() 函數指定了第二個參數(轉換時使用的基數),字符串前可以不加基數符號</title></head><body><script type="text/javascript"> console.log(parseInt("AF", 16));//175 console.log(parseInt("AF"));//NaN</script></body></html><!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>指定基數會影響到 parseInt() 轉換的結果</title></head><body><script type="text/javascript"> console.log(parseInt("10", 2));//2(二進制) console.log(parseInt("10", 8));//8(八進制) console.log(parseInt("10", 10));//10(十進制) console.log(parseInt("10", 16));//16(十六進制)</script></body></html>因為parseInt() 在解析八進制字面量的字符串時,ECMAScript 3 和 5 存在分歧,所以為了避免錯誤解析,建議在使用 parseInt() 函數時都明確指定基數。

5.4.3 parseFloat() 函數

與 parseInt() 類似,也是從第一個字符開始解析,直到遇見一個無效的浮點數字字符為止。字符串中只有第一個小數點是有效的。始終會忽略前導的零。只能解析十進制的值。十六進制格式的字符串都會被轉換為 0。如果字符串包含的是一個可解析為整數的數,那么會返回整數。<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>parseFloat()</title></head><body><script type="text/javascript"> console.log(parseFloat("1234Green"));//1234 console.log(parseFloat("0xA"));//0;十六進制會永遠被轉換為 0 console.log(parseFloat("22.5"));//22.5 console.log(parseFloat("22.5.43"));//22.5 console.log(parseFloat("0283.8"));//283.8 console.log(parseFloat("3.1238e8"));//31238000</script></body></html>

6 string 類型

用于表示由零或多個 16 位 Unicode 字符組成的字符串序列??捎呻p引號或單引號表示,這兩種語法形式沒有區別。注意,以什么引號開始,就必須以什么引號結束。

6.1 字符字面量

字面量 含義
/n 換行
/t 制表
/b 空格
/r 回車
/f 進紙
//|斜杠
/’ 單引號,用于字符串中包含單引號的情況
/” 雙引號,用于字符串中包含雙引號的情況
/xnn 以十六進制代碼 nn 表示的一個字符( n 為 0 ~ F)
/unnn 以十六進制代碼 nnnn 表示的一個 Unicode 字符( n 為 0 ~ F)
字符字面量可以出現在字符串中的任意位置,且將作為一個字符被解析。字符串長度以 length 屬性取得。但如果包含雙字節字符,那么 length 屬性不會正確返回字符的數目。

6.2 字符串特點

字符串不可變的,要改變某個變量保存的字符串,會先銷毀原來的字符串,再用包含新值的字符串返回。

6.3 轉換為字符串

6.3.1 toString() 方法

數值、布爾值、對象和字符串值都有 toString() 方法。null 和 undefined 值沒有toString() 方法。toString() 方法,可以傳入輸出數值的基數,默認是十進制格式。<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>toString(輸出值的基數)</title></head><body><script type="text/javascript"> var num = 10; console.log(num.toString());//"10" console.log(num.toString(2));//"1010" console.log(num.toString(8));//"12" console.log(num.toString(10));//"10" console.log(num.toString(16));//"a"</script></body></html>

6.3.2 String() 轉型函數

轉換規則:

輸入值 返回結果
值有 toString() 方法 調用該方法并返回相應的結果
null “null”
undefined “undefined”
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>String() 將任何類型轉換為字符串</title></head><body><script type="text/javascript"> console.log(String(10));//"10" console.log(String(true));//"true" console.log(String(null));//"null" console.log(String(undefined));//"undefined"</script></body></html>

7 Object 類型

對象是一組數據和功能的集合。使用 new 創建對象。var o = new Object();Object 類型時所有他的實例的基礎。即 Object 類型所具有的任何屬性和方法也同樣存在于更具體的對象中。Object 的每個實例都具有以下屬性和方法——
方法名 說明
Constructor 保存著用于創建當前對象的函數
hasOwnPRoperty(propertyName) 判斷給定的屬性在當前對象實例中是否存在,其中的屬性名是字符串形式傳入
isprototypeOf(object) 判斷傳入的對象是否是另一個對象的原型
propertyIsEnumerable(propertyName) 判斷給定的屬性是否能夠使用 for-in 語句,其中的屬性名是字符串形式傳入
toLocaleString() 返回對象的字符串表示,考慮了本地時區
toString() 返回對象的字符串表示
valueOf() 返回對象的字符串、數值或布爾值表示,通常與 toString() 返回值相同
以后會詳細介紹,敬請期待 O(∩_∩)O~
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一区二区三区回区在观看免费视频| 精品久久久精品| 色噜噜狠狠色综合网图区| 成人久久久久久| 亚洲国产精品视频在线观看| 久久天堂av综合合色| 国产精品中文字幕在线| 中文字幕免费精品一区高清| 国产ts一区二区| 国产精品永久免费| 国产精品视频自拍| 日韩免费在线电影| 91精品国产一区| 97视频人免费观看| 精品自拍视频在线观看| 欧美性高潮在线| 欧美在线精品免播放器视频| 国产午夜精品理论片a级探花| 国产精品亚洲精品| 日韩在线视频观看正片免费网站| 美女av一区二区三区| 欧美做爰性生交视频| 日韩av影视在线| 欧美华人在线视频| 欧美怡红院视频一区二区三区| 亚洲日本欧美日韩高观看| 欧美日韩国产中字| 欧美视频在线观看免费| 亚洲国产成人久久| 日本欧美爱爱爱| 日韩精品视频在线播放| 欧美视频在线观看免费网址| 欧美天堂在线观看| 久久夜精品va视频免费观看| 2019最新中文字幕| 性色av一区二区三区在线观看| 国产精品久久久久久亚洲调教| 欧美日韩一区二区免费在线观看| 日韩精品视频在线| 久久五月情影视| 国产精品都在这里| 日韩精品极品在线观看| 97视频国产在线| 日韩中文字幕视频在线观看| 国产丝袜一区视频在线观看| 亚洲国产精品专区久久| 日韩美女毛茸茸| 亚洲欧美国产日韩中文字幕| 日韩在线视频网| 国产精品激情av电影在线观看| 亚洲新声在线观看| 日韩一区二区av| 91久久久久久久一区二区| 91精品久久久久久久久久| 亚洲精品xxx| 欧美大片免费看| 一区二区三区动漫| 午夜欧美不卡精品aaaaa| 国产精品久久久久久久一区探花| 日韩美女激情视频| 欧美最猛性xxxxx(亚洲精品)| 亚洲精品www| 亚洲第一页中文字幕| 97在线看免费观看视频在线观看| 亚洲欧美激情视频| 亚洲第一网站男人都懂| 国产精品一区电影| 国产精品久久久久久久一区探花| 久久最新资源网| 2019国产精品自在线拍国产不卡| 精品久久久久久久久久ntr影视| 久久天天躁狠狠躁老女人| 91精品国产一区| 这里精品视频免费| 91精品中国老女人| 亚洲а∨天堂久久精品喷水| 久久全球大尺度高清视频| 亚洲成人黄色网址| 国产成人精品av在线| 亚洲第一色中文字幕| 亚洲直播在线一区| 91精品国产成人www| xxav国产精品美女主播| 午夜免费久久久久| 777午夜精品福利在线观看| 亚洲人成啪啪网站| 国模叶桐国产精品一区| 国产精品久久久久福利| 欧美黄色片在线观看| 亚洲加勒比久久88色综合| 日韩av网址在线观看| 国产日本欧美一区二区三区| 国内精品中文字幕| www.亚洲男人天堂| 中文亚洲视频在线| 97人人模人人爽人人喊中文字| 最近中文字幕2019免费| 97涩涩爰在线观看亚洲| 一本色道久久综合亚洲精品小说| 成人黄色免费片| 亚洲欧美国产视频| 亚洲欧洲一区二区三区在线观看| 日韩精品极品毛片系列视频| 日韩精品欧美激情| 亚洲精品免费在线视频| 自拍偷拍亚洲一区| 色视频www在线播放国产成人| 欧美激情欧美狂野欧美精品| 亚洲二区中文字幕| 美女啪啪无遮挡免费久久网站| 日韩精品在线免费观看| 欧美成人免费在线观看| 97婷婷涩涩精品一区| 亚洲国产精久久久久久久| 欧美性猛交xxxx| 中文字幕日韩有码| 国产一区二区三区精品久久久| 91精品国产91久久久久久最新| 亚洲精品福利资源站| 国产精品福利无圣光在线一区| 欧美整片在线观看| 亚洲自拍偷拍区| www.日韩视频| 97香蕉久久超级碰碰高清版| 成人欧美一区二区三区在线湿哒哒| 久久久久久91| 日本午夜精品理论片a级appf发布| 国产成人激情视频| 91九色在线视频| 亚洲国模精品私拍| 欧美在线视频网站| 日韩欧美国产网站| 欧美精品18videos性欧| 成人免费黄色网| 久久精品国产清自在天天线| 亚洲国内高清视频| 2021久久精品国产99国产精品| 欧美色另类天堂2015| 在线观看91久久久久久| 中文字幕在线看视频国产欧美在线看完整| 亚洲第一区中文99精品| 久久久精品日本| 国产综合久久久久| 欧美激情视频一区| 欧美日韩国产在线播放| 国产日韩精品在线| 中文字幕亚洲精品| 一区二区三区视频观看| 午夜精品久久久久久久99黑人| 日韩中文av在线| 久久精品最新地址| 日本成熟性欧美| 欧美一区第一页| 久久精品国产综合| 欧美激情第三页| 大伊人狠狠躁夜夜躁av一区| 日本免费久久高清视频| 久久av中文字幕| 2019亚洲男人天堂| 97视频免费在线看| 国产精品视频免费在线观看| 国产精品永久免费观看| 一区二区三欧美| 一本大道久久加勒比香蕉|