溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Javascript中數(shù)據(jù)類(lèi)型不包括哪個(gè)

發(fā)布時(shí)間:2021-07-05 09:28:56 來(lái)源:億速云 閱讀:286 作者:小新 欄目:web開(kāi)發(fā)

這篇文章主要為大家展示了“Javascript中數(shù)據(jù)類(lèi)型不包括哪個(gè)”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Javascript中數(shù)據(jù)類(lèi)型不包括哪個(gè)”這篇文章吧。

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,BooleanNumber,StringObject

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

UndefinedNull類(lèi)型只有一個(gè)值,那分別是undefinednull。
對(duì)于undefined來(lái)說(shuō),需要記住下面兩點(diǎn):

  1. 已聲明但未初始化的變量值為undefined(參考上面代碼)

  2. undefinednull相等

console.log(undefined == null) //true

對(duì)于null來(lái)說(shuō),需要記住兩點(diǎn):

  1. typeof null 返回"object",從邏輯上看,null為object的引用(示例見(jiàn)typeof

  2. undefinednull相等

Boolean

Boolean類(lèi)型有兩個(gè)值——truefalse。
任何數(shù)據(jù)可以調(diào)用布爾函數(shù)Boolean(), 會(huì)返回一個(gè)布爾值。

類(lèi)型truefalse
Booleantruefalse
String非零字符串“”(空字符串)
Number非零數(shù)字(包括無(wú)窮大)0和NaN
Object任何對(duì)象null
Undefined不適用undefined
Null不適用null

為了便于記憶, 只需記住false,""(空字符串),0,NaNnullundefined會(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

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格式表示的通病。

數(shù)值范圍

Number有兩個(gè)屬性表示JavaScript的數(shù)值范圍——Number.MAX_VALUENumber.MIN_VALUENumber.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_VALUENumber.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):

  1. 任何設(shè)計(jì)NaN的操作都返回NaN.

  2. NaN不等于任何值(包括它本身).

我們通常可以用isNaN()函數(shù)確定某個(gè)變量是否是NaN.

console.log(isNaN(NaN))  // trueconsole.log(isNaN("1"))  //false

數(shù)值轉(zhuǎn)換 Number(), parseInt()和parseFloat()

有三個(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

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)
\xnnx表示十六進(jìn)制, n為0-F, nn表示一個(gè)字符. 如\x41表示”A”
\unnnnu表示Unicode, 也為十六進(jìn)制. nnnn表示一個(gè)十六進(jìn)制的Unicode字符

例如:

console.log("這是單引號(hào): \'")    //這是單引號(hào): 'console.log("這是\n換行符")/*
這是
換行符
*/console.log("這是大寫(xiě)字母: \x41")  //這是大寫(xiě)字母: A

轉(zhuǎn)換為字符串 toString()和String()

大部分值都有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()方法, 那么哪些值不能使用呢? 那就是nullundefined.
當(dāng)我們需要將一個(gè)變量A轉(zhuǎn)換為字符串時(shí), 假如我們不知道變量A是否是nullundefined, 我們可以使用String()函數(shù). 這個(gè)函數(shù)可以講任意類(lèi)型的值轉(zhuǎn)換為字符串. 其規(guī)則如下:

  • 如果可以調(diào)用toString()方法則調(diào)用該方法.

  • 如果是null, 則返回"null"

  • 如果是undefined, 則返回"undefined"

Object

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í)例有下列基本的屬性和方法:

  1. constructor
    constructor屬性保存著穿件當(dāng)前對(duì)象的函數(shù), 也叫構(gòu)造函數(shù). 如上例中的Object()

  2. hasOwnProperty(propertyName)
    這個(gè)方法用于檢測(cè)當(dāng)前對(duì)象實(shí)例中是否有屬性名為propertyName的屬性. propertyName必須為字符串

  3. isPrototypeOf(object)
    其用于檢查傳入的對(duì)象object是否為當(dāng)前對(duì)象實(shí)例的原型

  4. propertyIsEnumerable(propertyName)
    用于檢查給定的屬性propertyName是否可以用for-in語(yǔ)句來(lái)枚舉. propertyName必須為字符串

  5. 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)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI