這篇文章主要為大家展示了“Javascript中數(shù)據(jù)類(lèi)型不包括哪個(gè)”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Javascript中數(shù)據(jù)類(lèi)型不包括哪個(gè)”這篇文章吧。
創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括西青網(wǎng)站建設(shè)、西青網(wǎng)站制作、西青網(wǎng)頁(yè)制作以及西青網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專(zhuān)注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,西青網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到西青省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
Javascript的數(shù)據(jù)類(lèi)型不包括Symbol,JavaScript有6種數(shù)據(jù)類(lèi)型,分別是Undefined、Null、Boolean、Number、String和Object。
本文操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。
Javascript的數(shù)據(jù)類(lèi)型不包括什么?
本文根據(jù)(JavaScript高級(jí)程序設(shè)計(jì)(第3版))總結(jié)
JavaScript之六大數(shù)據(jù)類(lèi)型(不包括Symbol)
JavaScript 有6中數(shù)據(jù)類(lèi)型——Undefined
,Null
,Boolean
,Number
,String
和Object
ES6中有7種, 多了一種數(shù)據(jù)類(lèi)型Symbol, 本文不涉及.
Undefined
表示未定義,Null
表示空,Boolean
表示布爾值,Number
表示數(shù)值,String表示字符串。
通常我們可以用typeof
操作符來(lái)檢測(cè)變量的數(shù)據(jù)類(lèi)型。
注意typeof是操作符!操作符!操作符!
typeof操作符應(yīng)用一下規(guī)則:
"undefined"
——這個(gè)值是未定義的。
"boolean"
——這個(gè)值是布爾值
"string"
——這個(gè)值是字符串
"number"
——這個(gè)值是數(shù)值
"object"
——這個(gè)值是對(duì)象或Null
"function"
——這個(gè)值是函數(shù)
例如字符串 str="我是String類(lèi)型"
:
console.log(typeof str) //"string" 注意typeof操作符的返回的結(jié)果是字符串
對(duì)于typeof操作符, 還有一點(diǎn)詭異的地方,那就是:
1. typeof對(duì)null
返回"object"
,
2. typeof對(duì)未聲明的變量返回"undefined"
3. typeof對(duì)聲明而未初始化的變量也返回"undefined"
var s = null console.log(typeof s) //"object" console.log(typeof a) //"undefined", 注意變量a未聲明 var b; console.log(typeof b) //"undefined", 注意變量b聲明但未初始化
因?yàn)?code>typeof的詭異特性,且我們還需進(jìn)步知道變量的具體信息,我們常用instanceof來(lái)確定變量的數(shù)據(jù)類(lèi)型。
Undefined
和Null
類(lèi)型只有一個(gè)值,那分別是undefined
和null
。
對(duì)于undefined
來(lái)說(shuō),需要記住下面兩點(diǎn):
已聲明但未初始化的變量值為undefined
(參考上面代碼)
undefined
和null
相等
console.log(undefined == null) //true
對(duì)于null
來(lái)說(shuō),需要記住兩點(diǎn):
typeof null
返回"object"
,從邏輯上看,null為object的引用(示例見(jiàn)typeof
)
undefined
和null
相等
Boolean
類(lèi)型有兩個(gè)值——true
和false
。
任何數(shù)據(jù)可以調(diào)用布爾函數(shù)Boolean()
, 會(huì)返回一個(gè)布爾值。
類(lèi)型 | true | false |
---|---|---|
Boolean | true | false |
String | 非零字符串 | “”(空字符串) |
Number | 非零數(shù)字(包括無(wú)窮大) | 0和NaN |
Object | 任何對(duì)象 | null |
Undefined | 不適用 | undefined |
Null | 不適用 | null |
為了便于記憶, 只需記住false
,""
(空字符串),0
,NaN
,null
和undefined
會(huì)使Boolean()
函數(shù)變?yōu)?code>false,其他為true
即可。
代碼范例:
console.log(Boolean(true)) //trueconsole.log(Boolean("")) //falseconsole.log(Boolean(1)) //trueconsole.log(Boolean(null)) //false
Number
類(lèi)型使用IEEE754
格式表示整數(shù)和浮點(diǎn)數(shù)。對(duì)于整數(shù),JavaScript若遇到八進(jìn)制和十六進(jìn)制數(shù)會(huì)自動(dòng)轉(zhuǎn)換為十進(jìn)制數(shù), 若數(shù)的范圍超過(guò)八進(jìn)制和十六進(jìn)制的便是范圍則解析為是十進(jìn)制數(shù)。
console.log(070) //56console.log(0xA) //10
八進(jìn)制在嚴(yán)格模式下出錯(cuò)。
對(duì)于浮點(diǎn)數(shù),Javascript會(huì)將小數(shù)點(diǎn)后全為0
的小數(shù)和小數(shù)點(diǎn)后沒(méi)有數(shù)字的小數(shù)自動(dòng)轉(zhuǎn)換為整數(shù)。
console.log(1.00) //1console.log(10.) //10
浮點(diǎn)數(shù)最高精度為17位小數(shù), 但是在算術(shù)運(yùn)算時(shí)需要注意下面的式子:
console.log(0.1+0.2) //0.30000000000000004
這也是IEEE754
格式表示的通病。
Number
有兩個(gè)屬性表示JavaScript的數(shù)值范圍——Number.MAX_VALUE
和 Number.MIN_VALUE
。Number.MAX_VALUE
表示在JavaScript中最大的值,若超出其范圍則會(huì)轉(zhuǎn)為infinity
。Number.MIN_VALUE
表示在JavaScript中最小的正值,若超出其范圍則會(huì)轉(zhuǎn)為0
。Number.MAX_VALUE
在大多數(shù)瀏覽其中是1.7976931348623157e+308
.
我們可以通過(guò)isFinite()
方法來(lái)確定變量是否在Number.MAX_VALUE
和 Number.MIN_VALUE
之間,若在,則返回true
, 反之則返回false
。
var num = Number.MAX_VALUE+Number.MAX_VALUE; //超出了Number.MAX_VALUEconsole.log(isFinite(num)); //false
Number
中有個(gè)特殊值–NaN
, 這個(gè)數(shù)表示非數(shù)值(Not a number). 這個(gè)數(shù)有兩個(gè)特點(diǎn):
任何設(shè)計(jì)NaN
的操作都返回NaN
.
NaN
不等于任何值(包括它本身).
我們通??梢杂?code>isNaN()函數(shù)確定某個(gè)變量是否是NaN
.
console.log(isNaN(NaN)) // trueconsole.log(isNaN("1")) //false
有三個(gè)函數(shù)可以講將數(shù)值轉(zhuǎn)換為數(shù)值類(lèi)型: Number()
, parseInt()
, parseFloat()
.Number()
函數(shù)的轉(zhuǎn)換規(guī)則如下:
對(duì)于Boolean
類(lèi)型數(shù)值, true
轉(zhuǎn)換為1
, false
轉(zhuǎn)換為0
將null
轉(zhuǎn)換為0
將undefined
轉(zhuǎn)換為NaN
String
類(lèi)型的值按以下規(guī)則轉(zhuǎn)換
若字符串中只包含數(shù)字(包括前面帶正負(fù)號(hào)), 則將其轉(zhuǎn)換為十進(jìn)制數(shù). 且忽略前導(dǎo)0
.
若字符串包含有效的浮點(diǎn)格式數(shù), 則轉(zhuǎn)換為浮點(diǎn)數(shù). 忽略前導(dǎo)0
.
若字符串包含有效的十六進(jìn)制格式(如"0xf"
), 則將其轉(zhuǎn)換為相同大小的十進(jìn)制數(shù).
若為空串, 則轉(zhuǎn)換為0
若字符串包含上述格式之外的其他子, 則轉(zhuǎn)換為NaN
待轉(zhuǎn)換類(lèi)型是對(duì)象時(shí), 調(diào)用對(duì)象的valueOf()
方法返回某一值, 再按前面的方法轉(zhuǎn)換(第一次轉(zhuǎn)換)
當(dāng)?shù)谝淮无D(zhuǎn)換結(jié)果為NaN
時(shí), 調(diào)用對(duì)象的toString()
方法返回字符串值, 再按前面的方法轉(zhuǎn)換
parseInt()
函數(shù)有兩個(gè)參數(shù), 第一個(gè)參數(shù)為待轉(zhuǎn)換的字符串(若不是字符串則使用ToString()函數(shù)轉(zhuǎn)換為字符串), 第二個(gè)參數(shù)2到36之間的一個(gè)數(shù), 作為基數(shù)使用. 基數(shù)可以省略, 默認(rèn)基數(shù)為10.
parseInt() 在解析第一個(gè)參數(shù)(字符串)時(shí)會(huì)忽略字符串前面的空格, 知道找到第一個(gè)非空格字符. 如果第一個(gè)字符不是數(shù)字字符或者負(fù)號(hào), parseInt()會(huì)返回NaN; 也就是說(shuō), 用parseInt() 轉(zhuǎn)換空字符串會(huì)返回NaN(Number對(duì)空字符串返回0). 如果第一個(gè)字符是數(shù)字字符, parseInt() 會(huì)繼續(xù)解析第二個(gè)字符, 直到解析完所有后續(xù)字符或者遇到了一個(gè)非數(shù)字字符.
來(lái)源于(JavaScript高級(jí)程序設(shè)計(jì)(第3版))
console.log(parseInt(" 1234blue")) //1234console.log(parseInt("")) //NaNconsole.log(parseInt("AF", 16)) //175
parseFloat()
相比于前兩個(gè), 他只能解析十進(jìn)制數(shù). 當(dāng)解析的字符串可以解析成整數(shù)時(shí)也會(huì)被解析位整數(shù).
console.log(parseFloat("1234basd")) // 1234console.log(parseFloat("22.5") // 22.5
更多信息可以查看文檔:
Number Object
parseInt()和parseFloat()
String
類(lèi)型常用語(yǔ)表示16位Unicode
字符組成的字符序列, 也就是我們常說(shuō)的字符串. 字符串有個(gè)鮮明的特點(diǎn), 那就是字符串一旦創(chuàng)建, 他們的值就不會(huì)改變.
String
類(lèi)型若想包含一些特殊字符如 ‘(單引號(hào))或 ” (雙引號(hào)) , 就必須使用轉(zhuǎn)義字符. 也可以叫它們字符字面量.
常用字符字面量如下所示:
字面量 | 含義 |
---|---|
\n | 換行符 |
\t | 制表符 |
\b | 退格符 |
\r | 回車(chē)符 |
\f | 換頁(yè)符 |
\ | 斜杠 |
\’ | 單引號(hào) |
\” | 雙引號(hào) |
\xnn | x表示十六進(jìn)制, n為0-F, nn表示一個(gè)字符. 如\x41表示”A” |
\unnnn | u表示Unicode, 也為十六進(jìn)制. nnnn表示一個(gè)十六進(jìn)制的Unicode字符 |
例如:
console.log("這是單引號(hào): \'") //這是單引號(hào): 'console.log("這是\n換行符")/* 這是 換行符 */console.log("這是大寫(xiě)字母: \x41") //這是大寫(xiě)字母: A
大部分值都有toString()方法, 因此我們可以使用這個(gè)方法.
var a = 2console.log(a.toString()) //2var b = trueconsole.log(b.toString()) //true
還可以給toString()
添加一個(gè)參數(shù), 這個(gè)參數(shù)表示基數(shù).
var num = 7console.log(num.toString(2)) //111console.log(num.toString(3)) //21
前面說(shuō)了大部分值可以使用toString()
方法, 那么哪些值不能使用呢? 那就是null
和undefined
.
當(dāng)我們需要將一個(gè)變量A轉(zhuǎn)換為字符串時(shí), 假如我們不知道變量A是否是null
和undefined
, 我們可以使用String()
函數(shù). 這個(gè)函數(shù)可以講任意類(lèi)型的值轉(zhuǎn)換為字符串. 其規(guī)則如下:
如果可以調(diào)用toString()
方法則調(diào)用該方法.
如果是null
, 則返回"null"
如果是undefined
, 則返回"undefined"
Object
類(lèi)型俗稱(chēng)對(duì)象, 對(duì)象的實(shí)例通常使用new
操作符進(jìn)行創(chuàng)建. 對(duì)象的實(shí)例還是對(duì)象, 我們會(huì)在對(duì)象的實(shí)例中添加屬性和方法.
var obj = new Object();
Object
的實(shí)例有下列基本的屬性和方法:
constructor
constructor
屬性保存著穿件當(dāng)前對(duì)象的函數(shù), 也叫構(gòu)造函數(shù). 如上例中的Object()
hasOwnProperty(propertyName)
這個(gè)方法用于檢測(cè)當(dāng)前對(duì)象實(shí)例中是否有屬性名為propertyName
的屬性. propertyName
必須為字符串
isPrototypeOf(object)
其用于檢查傳入的對(duì)象object是否為當(dāng)前對(duì)象實(shí)例的原型
propertyIsEnumerable(propertyName)
用于檢查給定的屬性propertyName
是否可以用for-in
語(yǔ)句來(lái)枚舉. propertyName
必須為字符串
toLocaleString()
, toString()
, valueOf()
這三個(gè)方法都可以返回對(duì)象的字符串表示, valueOf()
還可以返回對(duì)象的數(shù)值, 布爾值表示.
可以參考這篇文章:Javascript toString()、toLocaleString()、valueOf()三個(gè)方法的區(qū)別-博客園-一個(gè)懸浮在空中的胖子
var obj = new Object() obj.constructor //? Object() { [native code] }obj.name = "ES" //給obj添加屬性obj.hasOwnProperty("name") //true, 注意參數(shù)必須為字符串形式obj.propertyIsEnumerable("name") //trueobj.toString() //"[object Object]"
以上是“Javascript中數(shù)據(jù)類(lèi)型不包括哪個(gè)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!