欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript數(shù)據(jù)類(lèi)型學(xué)習(xí)筆記

 更新時(shí)間:2016年01月25日 10:02:29   作者:billyangg  
這篇文章主要針對(duì)JavaScript數(shù)據(jù)類(lèi)型整理的學(xué)習(xí)筆記,分享給大家,感興趣的小伙伴們可以參考一下

ECMAscript 中有5種簡(jiǎn)單的數(shù)據(jù)類(lèi)型,也被稱(chēng)為基本數(shù)據(jù)類(lèi)型:Undefined、Null、Boolean、Number和String。還有一種復(fù)雜的數(shù)據(jù)類(lèi)型——Object。

Undefined 類(lèi)型

在使用var 聲明變量但未對(duì)其進(jìn)行初始化時(shí),這個(gè)變量的值就是undefined。如:

var number;
document.write(number); //undefined

如果沒(méi)有聲明變量則會(huì)出現(xiàn)下面這種錯(cuò)誤。如:

document.write(str); //錯(cuò)誤

但是用typeof對(duì)其進(jìn)行執(zhí)行時(shí),不管有沒(méi)有聲明都會(huì)返回undefined 值。如:

var num;
document.write(typeof num); //undefined
document.write(typeof str); //undefined

Null 類(lèi)型

使用typeof檢測(cè)null 時(shí)會(huì)返回"object"。如:

var num = null;
document.write(typeof num); //object

實(shí)際上undefined 值是派生自null 值的,因此他們相等都會(huì)返回true。如:

alert(null == undefined); //true

這里要注意的是,只要意在保存對(duì)象的變量還沒(méi)有真正保存對(duì)象,就應(yīng)該明確地讓該變量保存null 值,此舉有助于區(qū)分null 和 undefined。如:

var num1 = null;
var num2;
document.write(typeof num1 + " " + typeof num2); //object undefined

Boolean 類(lèi)型

要將一個(gè)值轉(zhuǎn)換為其對(duì)應(yīng)的Boolean 值,可以使用轉(zhuǎn)型函數(shù)Boolean()。如:

var str = "helloworld";
document.write(Boolean(str)); //true

《JavaScript高級(jí)編程設(shè)計(jì)》一書(shū)中的3.4.4中給出了關(guān)于各種數(shù)據(jù)類(lèi)型及其對(duì)應(yīng)的轉(zhuǎn)換規(guī)則表格。大概有以下幾種:

  • 數(shù)據(jù)類(lèi)型為String 時(shí),任何非空字符串都會(huì)轉(zhuǎn)換為true;
  • 數(shù)據(jù)類(lèi)型為Number 時(shí),除了0 和NaN 會(huì)被轉(zhuǎn)換為false 之外,其他都會(huì)轉(zhuǎn)換為true;
  • 數(shù)據(jù)類(lèi)型為Object 時(shí),除了null 之外,都會(huì)轉(zhuǎn)換為true;
  • 數(shù)據(jù)類(lèi)型為Undefined 時(shí),n/a 會(huì)被轉(zhuǎn)換為true,undefined 會(huì)被轉(zhuǎn)換為false;

這里要注意的是,if 語(yǔ)句經(jīng)常使用自動(dòng)執(zhí)行響應(yīng)的Boolean 轉(zhuǎn)換作為條件。如:

var str = "helloworld";
if (str){
  document.write("hellothere");
} //hellothere

Number 類(lèi)型

除了可以以十進(jìn)制表示之外,整數(shù)還可以通過(guò)八進(jìn)制或者十六進(jìn)制的字面值來(lái)表示,其中八進(jìn)制字面值的第一位必須是0,然后是八進(jìn)制數(shù)字序列(0~7)。如:

var num1 = 070; //八進(jìn)制的56
var num2 = 032; //八進(jìn)制的32
var num3 = 079; //錯(cuò)誤的八進(jìn)制(>7)
var num4 = 09; //錯(cuò)誤的八進(jìn)制(>7)

十六進(jìn)制字面值的前兩位必須是0x,后面跟任何十六進(jìn)制數(shù)(0~9 及 A~F)。如:

var num1 = 0xA; //十六進(jìn)制的10
var num1 = 0xa; //也是十六進(jìn)制的10(字母不區(qū)分大小寫(xiě))

浮點(diǎn)數(shù)值

這里要注意的是,永遠(yuǎn)不要比較特定的浮點(diǎn)數(shù)值。如:

var a = 0.1;
var b = 0.2;
if (a + b == 0.3){
  document.write("you are right")
} //因?yàn)?.1 加上0.2 實(shí)際上等于0.30000000000000004

數(shù)值范圍

ECMAScript 能夠表示的最大和最小數(shù)值保存在Number.MAX_VALUE 和Number.MIN_VALUE 之中。要想確定一個(gè)數(shù)值是不是有窮的,可以使用isFinite()函數(shù)。如:

document.write(isFinite(Number.MAX_VALUE + Number.MAX_VALUE)); //false

NaN

0 除以0 會(huì)返回NaN,正數(shù)除以0 會(huì)返回Infinity,復(fù)數(shù)則會(huì)返回-Infinity。其次,NaN 與任何數(shù)值都不相等,包括它本身。另外函數(shù)isNaN()可以幫助我們確定這個(gè)參數(shù)是否“不是數(shù)值”。如:

document.write(isNaN("a")); //true;
document.write(isNaN("324")); //false;
document.write(isNaN(true)); //false;
document.write(isNaN(false)); //false;
document.write(isNaN(NaN)); //true;

數(shù)值轉(zhuǎn)換

有三個(gè)函數(shù)可以把非數(shù)值轉(zhuǎn)換為數(shù)值:Number()、parseInt()、parseFloat()。

Number()的轉(zhuǎn)換規(guī)則如下:

如果是Boolean 值,true 和false 會(huì)被轉(zhuǎn)換為1 和0。
如果是數(shù)字值,則不變。
如果是null 值,則轉(zhuǎn)換為0。
如果是undefined,返回NaN。
如果是字符串則遵循下列規(guī)則:

  • 如果只有數(shù)字,則轉(zhuǎn)換為十進(jìn)制數(shù)值。
  • 如果是浮點(diǎn)格式,則將其轉(zhuǎn)換成對(duì)應(yīng)的浮點(diǎn)數(shù)值。同樣也會(huì)忽略前導(dǎo)零。
  • 如果是十六進(jìn)制格式則會(huì)轉(zhuǎn)換成十進(jìn)制數(shù)。
  • 如果字符串是空的,則會(huì)轉(zhuǎn)換成0。
  • 其他情況則會(huì)轉(zhuǎn)換為NaN。

具體看下面的例子:

document.write(Number(true)); //1
document.write(Number(false)); //0
document.write(Number("789")); //789
document.write(Number(null)); //0
document.write(Number(undefined)); //NaN
document.write(Number("02.0942")); //2.0942
document.write(Number(0xa)); //10
document.write(Number("")); //0
document.write(Number("fdsa")); //NaN

parseInt()的轉(zhuǎn)換規(guī)則如下:

  • 如果第一個(gè)字符不是數(shù)字字符或者符號(hào),parseInt()會(huì)返回NaN。
  • 用parseInt()轉(zhuǎn)換空字符串會(huì)返回NaN。
  • 如果第一個(gè)字符是數(shù)字字符,它會(huì)繼續(xù)解析第二個(gè)字符,直到遇到了一個(gè)非數(shù)字字符.

下面是具體的例子:

document.write(parseInt("fds")); //NaN
document.write(parseInt("")); //NaN
document.write(parseInt("1111112abc")); //1111112
document.write(parseInt("-1111112abc")); //-1111112
document.write(parseInt("+1111112abc")); //-1111112
document.write(parseInt("0xa")); //10
document.write(parseInt("0022.00009")); //22
document.write(parseInt("070")); //ECMAScript 3認(rèn)為是56(八進(jìn)制), ECMAScript 5認(rèn)為是70(十進(jìn)制)

另外需要注意的是,ECMAScript 5已經(jīng)不具備解析八進(jìn)制值的能力了所以為了消除這個(gè)問(wèn)題,可以為這個(gè)函數(shù)提供第二個(gè)參數(shù):轉(zhuǎn)換時(shí)使用的基數(shù)(多少進(jìn)制),具體如下:

document.write(parseInt("070",10)); //70
document.write(parseInt("070",8)); //56
document.write(parseInt("070",16)); //112

多數(shù)情況下,最好默認(rèn)設(shè)置成10進(jìn)制。

parseFloat()的轉(zhuǎn)換規(guī)則如下:

  • 與parseInt()類(lèi)似,不同的是字符串第一個(gè)小數(shù)點(diǎn)是有效的,而從第二個(gè)小數(shù)點(diǎn)開(kāi)始包括第二個(gè)小數(shù)點(diǎn)是無(wú)效的。
  • 他不能解析十六進(jìn)制數(shù)值?。?!
  • 他只能解析十進(jìn)制數(shù)值?。?!
  • 他沒(méi)有用第二個(gè)基數(shù)來(lái)指定進(jìn)制的用法。

下面是具體的例子:

document.write(parseFloat("421")); //421
document.write(parseFloat("0421.32.1")); //421.32
document.write(parseFloat("0xaafd")); //0
document.write(parseFloat("070")); //70
document.write(parseFloat("070abc")); //70
document.write(parseFloat("")); //NaN
document.write(parseFloat("abc")); //NaN

String 類(lèi)型

要把一個(gè)值轉(zhuǎn)換成字符串有兩種方式。第一種是使用幾乎每個(gè)值都有的toString()方法。如下:

document.write((533).toString(10)); //"533"
document.write((0xa).toString(10)); //"10"
document.write((0xa).toString(2)); //"1010"
document.write((true).toString(10)); //"true"
document.write((false).toString(10)); //"false"

另外需要注意的是,null 和 undefined 不能轉(zhuǎn)換。

document.write((null).toString(10)); //
document.write((undefined).toString(10)); //

如果不知道需要轉(zhuǎn)換的數(shù)值是否是null 或者undefined 則應(yīng)該使用轉(zhuǎn)型函數(shù)String(),如果是null 會(huì)返回"null"如果是undefined 會(huì)返回"undefined"。如下:

document.write(String(null)); //"null"
document.write(String(undefined)); //"undefined"

另外在下一篇文章中再詳細(xì)介紹Object 類(lèi)型。

以上就是關(guān)于JavaScript數(shù)據(jù)類(lèi)型的簡(jiǎn)單介紹,希望對(duì)大家學(xué)習(xí)JavaScript數(shù)據(jù)類(lèi)型有所幫助。

相關(guān)文章

  • Javascript createElement和innerHTML增加頁(yè)面元素的性能對(duì)比

    Javascript createElement和innerHTML增加頁(yè)面元素的性能對(duì)比

    Javascript之createElement和innerHTML增加頁(yè)面元素的性能對(duì)比
    2009-09-09
  • javascript實(shí)現(xiàn)添加附件功能的方法

    javascript實(shí)現(xiàn)添加附件功能的方法

    這篇文章主要介紹了javascript實(shí)現(xiàn)添加附件功能的方法,在我們編輯信息時(shí),有時(shí)候需要附加文件、圖片實(shí)現(xiàn)上傳功能,通過(guò)本文了解javascript是如何實(shí)現(xiàn)附加功能的,請(qǐng)閱讀。
    2015-11-11
  • js使用for循環(huán)查詢(xún)數(shù)組中是否存在某個(gè)值

    js使用for循環(huán)查詢(xún)數(shù)組中是否存在某個(gè)值

    IE8不支持indexOf,因此寫(xiě)一個(gè)for循環(huán)來(lái)判斷是否存在,下面是代碼,經(jīng)測(cè)試還不錯(cuò)
    2014-08-08
  • web-view內(nèi)嵌H5與uniapp數(shù)據(jù)的實(shí)時(shí)傳遞解決方案

    web-view內(nèi)嵌H5與uniapp數(shù)據(jù)的實(shí)時(shí)傳遞解決方案

    這篇文章主要介紹了web-view內(nèi)嵌H5與uniapp數(shù)據(jù)的實(shí)時(shí)傳遞,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • JavaScript之解構(gòu)賦值的理解

    JavaScript之解構(gòu)賦值的理解

    今天小編就為大家分享一篇關(guān)于JavaScript之解構(gòu)賦值的理解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • Javascript將JSON日期格式化

    Javascript將JSON日期格式化

    在做項(xiàng)目中,將實(shí)體轉(zhuǎn)化為JSON后,結(jié)果后臺(tái)返回json時(shí)間格式為/Date(1306418993027)/,在前臺(tái)JS里顯示的并不是真正的日期,而且我們不能把所有日期字段都變成string吧,因此寫(xiě)了Javascript的擴(kuò)展方法,來(lái)實(shí)現(xiàn)這個(gè)功能,代碼如下
    2016-08-08
  • 微信小程序左滑刪除實(shí)現(xiàn)代碼實(shí)例

    微信小程序左滑刪除實(shí)現(xiàn)代碼實(shí)例

    這篇文章主要介紹了微信小程序左滑刪除實(shí)現(xiàn)代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • JavaScript中的this指向和自定義屬性詳解

    JavaScript中的this指向和自定義屬性詳解

    下面小編就為大家?guī)?lái)一篇js中的this指向和自定義屬性。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2021-09-09
  • JS不能跨域借助jquery獲取IP地址的方法

    JS不能跨域借助jquery獲取IP地址的方法

    JS不能跨域,所以這里借助了jquery,真的可以實(shí)現(xiàn)獲取IP地址,下面是示例代碼,需要的朋友可以參考下
    2014-08-08
  • jquery 實(shí)現(xiàn)上下滾動(dòng)效果示例代碼

    jquery 實(shí)現(xiàn)上下滾動(dòng)效果示例代碼

    上下滾動(dòng)的效果,不用說(shuō),大家都有看到過(guò),本文為大家介紹下使用jquery實(shí)現(xiàn)上下滾動(dòng)效果,感興趣的朋友可以參考下,希望對(duì)大家有所幫助
    2013-08-08

最新評(píng)論