亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

JavaScript回顧學(xué)習(xí):數(shù)據(jù)類(lèi)型

youkede / 613人閱讀

摘要:本篇文章將回顧學(xué)習(xí)種基本類(lèi)型和及數(shù)據(jù)類(lèi)型之間的轉(zhuǎn)化。如果不能,再調(diào)用對(duì)象的方法,再測(cè)試返回值是否可以被轉(zhuǎn)化為數(shù)值。首先可以用于任何數(shù)據(jù)類(lèi)型,另外兩個(gè)則是專(zhuān)門(mén)用于把字符串轉(zhuǎn)換成數(shù)值。

概述

ECMAScript中有5中基本數(shù)據(jù)類(lèi)型:Undefined,Null,Boolean,Number,String,還有一種復(fù)雜數(shù)據(jù)類(lèi)型對(duì)象(Object),Object本質(zhì)上是由一組無(wú)序的名值對(duì)組成的,JavaScript同樣還定義了另外兩種特殊對(duì)象:

數(shù)組--->表示帶編號(hào)的值的有序組合

函數(shù)--->函數(shù)是具有與它相關(guān)聯(lián)的可執(zhí)行代碼的對(duì)象,通過(guò)調(diào)用函數(shù)來(lái)運(yùn)行可執(zhí)行代碼,并返回運(yùn)算結(jié)果

綜上為ES5的全部數(shù)據(jù)類(lèi)型,ES6新出了一種數(shù)據(jù)類(lèi)型為Symbol,表示獨(dú)一無(wú)二的值。
函數(shù),數(shù)組,對(duì)象在后續(xù)文章中會(huì)有詳解(寫(xiě)完后將加上鏈接,提前埋坑)。本篇文章將回顧學(xué)習(xí)5種基本類(lèi)型和Symbol及數(shù)據(jù)類(lèi)型之間的轉(zhuǎn)化。

基本數(shù)據(jù)類(lèi)型 undefined

Undefined類(lèi)型只有一個(gè)值,即undefined,在使用var聲明變量但沒(méi)有對(duì)這個(gè)變量初始化時(shí),這個(gè)變量的值就是undefined。

注意:我們沒(méi)有必要顯式的將一個(gè)變量初始化為undefined。因?yàn)闆](méi)有賦值初始化的變量就是undefined這樣更有利于我們比較賦值還是未賦值的變量。

Null

Undefined類(lèi)似,Null類(lèi)型也只有一個(gè)值null。null表示是一個(gè)空對(duì)象指針。所以當(dāng)type of null的時(shí)候返回"object"

undefined不同的是,當(dāng)我們明確這個(gè)變量是將用來(lái)保存對(duì)象的時(shí)候,我們最好將這個(gè)變量初始化為null,這樣有利于我們只要檢查當(dāng)前這個(gè)對(duì)象的值是不是null就可以知道當(dāng)前的變量是否已經(jīng)保存了一個(gè)對(duì)象的引用。同時(shí)也能更好的區(qū)別undefinednull

Boolean 類(lèi)型

Boolean類(lèi)型只有兩個(gè)值:truefalse 這個(gè)類(lèi)型在開(kāi)發(fā)中可以說(shuō)是用的最多的類(lèi)型了,大多數(shù)判斷都是用這個(gè)類(lèi)型來(lái)完成的。

注意: 所有的其他的類(lèi)型都可以轉(zhuǎn)化為Boolean類(lèi)型。關(guān)于轉(zhuǎn)化的情況下面會(huì)講到。

Number類(lèi)型

簡(jiǎn)而言之就是數(shù)字,分為整數(shù)和浮點(diǎn)數(shù)。最基本的整數(shù)數(shù)字值是十進(jìn)制整數(shù)的也就是我們平時(shí)用的數(shù)字,除了十進(jìn)制,還有八進(jìn)制和十六進(jìn)制。

八進(jìn)制0開(kāi)頭的后面的每位數(shù)都是(0~7)如:

var num = 0666; // 八進(jìn)制的438

但是如果不符合規(guī)則了,那前面的0就會(huì)被忽略,后面數(shù)值按照十進(jìn)制解析,如:

var num1 = 0668; // 不符合規(guī)則 解析為668 

(嚴(yán)格模式八進(jìn)制是無(wú)效的)

十六進(jìn)制的前兩位是0后面跟任何十六進(jìn)制的數(shù)字(0~9及A~F)

在進(jìn)行計(jì)算的時(shí)候八進(jìn)制和十六進(jìn)制的數(shù)值都會(huì)被轉(zhuǎn)化為十進(jìn)制數(shù)值。

浮點(diǎn)數(shù),就是通俗理解的小數(shù)。由于舍入誤差原因所以不要將浮點(diǎn)數(shù)作為判斷依據(jù)。
數(shù)字可以用科學(xué)計(jì)數(shù)法e表示,如:

var int = 3e3; // 表示3000,相當(dāng)于3乘以10的3次冪
var float = 3e-3 // 表示0.003 ,相當(dāng)于3乘以10的-3次冪

數(shù)字在javascript中是有范圍的:5e-324~1.7976931348623157e308;一般情況是用不到的知道就行,超過(guò)范圍的數(shù)值會(huì)自動(dòng)被轉(zhuǎn)換為Infinity(區(qū)分正負(fù))。如果出現(xiàn)了也可以用isFinite()函數(shù)進(jìn)行識(shí)別判斷,在范圍內(nèi)轉(zhuǎn)換為true。

關(guān)于數(shù)值最后還有一個(gè)特殊的值: NaN 代表非數(shù)值英文直譯縮寫(xiě)(Not a Number);用于本來(lái)是要返回?cái)?shù)值的操作沒(méi)有返回?cái)?shù)值就會(huì)返回NaNNaN有兩個(gè)特點(diǎn)需要注意一下:

任何涉及NaN的操作都返回NaN

NaN與任何值都不相等,包括NaN本身。

因?yàn)橐陨蟽蓚€(gè)比較難受的特點(diǎn)會(huì)導(dǎo)致我們沒(méi)法判斷一個(gè)值是不是NaN,所以JavaScript給我們定義了一個(gè)函數(shù):isNaN()這個(gè)函數(shù)接受一個(gè)參數(shù),如果能轉(zhuǎn)化位數(shù)值返回false,不能則true,以下有幾個(gè)書(shū)上非常經(jīng)典的例子,請(qǐng)切記(面試可能會(huì)用到,哈哈哈哈哈):

isNaN(NaN)     // true
isNaN(10)      // false (10是一個(gè)數(shù)值)
isNaN("10")    // false ("10"可以被轉(zhuǎn)化為數(shù)值10)
isNaN("blue")  // true  (不能被轉(zhuǎn)化為數(shù)值)
isNaN(true)    // false (可以被轉(zhuǎn)化為1)

手動(dòng)注意一下這里 isNaN()的參數(shù)也可以是對(duì)象,當(dāng)傳入一個(gè)對(duì)象的時(shí)候會(huì)先調(diào)用被傳入對(duì)象的valueOf()方法,然后確定該方法返回的數(shù)值是否可以被轉(zhuǎn)化為數(shù)值。如果不能,再調(diào)用對(duì)象的toString()方法,再測(cè)試返回值是否可以被轉(zhuǎn)化為數(shù)值。之所以特別注意這里因?yàn)橐话鉐avaScript中的內(nèi)置函數(shù)和操作符都是按照這個(gè)流程執(zhí)行的。下面基于isNaN舉個(gè)栗子:

var a = {};
isNaN(a);      // true 
//執(zhí)行過(guò)程
a.valueOf()    // {},不能轉(zhuǎn)化。
//然后執(zhí)行
a.toString()   // 返回"[object Object]" 也不能被轉(zhuǎn)化,所以isNaN返回true

說(shuō)到number類(lèi)型肯定要提一下3個(gè)函數(shù):Number(),parseInt(),parseFloat().功能相似但也不是完全相同,一個(gè)一個(gè)來(lái)說(shuō)。
首先Number()可以用于任何數(shù)據(jù)類(lèi)型,另外兩個(gè)則是專(zhuān)門(mén)用于把字符串轉(zhuǎn)換成數(shù)值。
Number()函數(shù)的轉(zhuǎn)換規(guī)則:

如果是Boolean值,truefalse將分別被轉(zhuǎn)換為10

如果是數(shù)字值則是簡(jiǎn)單的傳入和返回

如果是null,返回0

如果是undefined,返回NaN

如果是字符串,遵循以下規(guī)則:

如果字符串中只包含數(shù)字(包括前面帶正負(fù)號(hào)),則轉(zhuǎn)換為十進(jìn)制數(shù)字(0開(kāi)頭會(huì)忽略0),浮點(diǎn)數(shù)轉(zhuǎn)換為浮點(diǎn)數(shù)

如果字符串中包含有效的十六進(jìn)制數(shù),則轉(zhuǎn)換為相同大小的十進(jìn)制數(shù)

如果是空字符串,則返回0

如果字符串中包含除了上述之外的字符,則返回NaN

如果是對(duì)象,則調(diào)用valueOf()方法,按照上面的規(guī)則調(diào)用轉(zhuǎn)換返回值,如果返回NaN,則繼續(xù)調(diào)用toString()方法,再次按照上面的規(guī)則轉(zhuǎn)換

舉幾個(gè)例子:

var num1 = Number("Hello world") // NaN
var num2 = Number("") // 0
var num3 = Number("0000000000020") // 20
var num4 = Number(true) // 1

再次手動(dòng)注意一下 +操作符與Number()函數(shù)相同 ,如下例:

var str = "1212" 
+str // 1212

parseInt()只轉(zhuǎn)換字符串,規(guī)則大體可以整理為一下幾種:

它會(huì)忽略字符串前面的空格,如果第一個(gè)非空格字符串不是數(shù)字或者正負(fù)號(hào)就會(huì)返回NaN

空字符串返回NaNNumber()返回0

按順序解析每一個(gè)字符直至遇到非數(shù)字字符或結(jié)尾

浮點(diǎn)數(shù)會(huì)轉(zhuǎn)換為整數(shù)

可以添加第二個(gè)參數(shù)作為轉(zhuǎn)換基數(shù)(即多少進(jìn)制),如果不填第二個(gè)參數(shù)ES5之后無(wú)法解析8進(jìn)制數(shù)會(huì)直接忽略前導(dǎo)0

若第二個(gè)參數(shù)為16可忽略前導(dǎo)0x

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/106081.html

相關(guān)文章

  • JavaScript 回顧學(xué)習(xí):變量

    摘要:變量的分類(lèi)全局變量可以在任何地方使用的變量局部變量在函數(shù)內(nèi)聲明的變量只在函數(shù)內(nèi)有定義,作用域是局部性的什么時(shí)候使用當(dāng)一個(gè)數(shù)據(jù)需要被反復(fù)使用時(shí),就要先保存在變量中。 第一篇回顧學(xué)習(xí),變量 什么是變量 變量就是在內(nèi)存中刨一個(gè)坑存一個(gè)數(shù)據(jù),再給這個(gè)坑起個(gè)名。為什么要給一個(gè)加引號(hào)呢,因?yàn)镴avaScript是松散類(lèi)型的,即一個(gè)變量可以用來(lái)保存任何類(lèi)型的數(shù)據(jù)。變量的分類(lèi):全局變量:可以在任何地方...

    KitorinZero 評(píng)論0 收藏0
  • JavaScript回顧學(xué)習(xí):目錄篇

    摘要:前言之前說(shuō)要重頭開(kāi)始復(fù)習(xí),之前一直都在忙著找工作面試,現(xiàn)在工作也終于是找到了,雖然不那么盡人意,但總算有個(gè)歸屬,一段時(shí)間的適應(yīng)也有了自己穩(wěn)定的時(shí)間規(guī)劃,為了給懶惰捉急的自己一個(gè)前行的動(dòng)力,這一篇的回顧學(xué)習(xí)目錄篇也就這樣提上了日程。 前言 之前說(shuō)要重頭開(kāi)始復(fù)習(xí)js,之前一直都在忙著找工作面試,現(xiàn)在工作也終于是找到了,雖然不那么盡人意,但總算有個(gè)歸屬,一段時(shí)間的適應(yīng)也有了自己穩(wěn)定的時(shí)間規(guī)劃...

    luckyw 評(píng)論0 收藏0
  • 2017前端發(fā)展回顧

    摘要:前端開(kāi)發(fā)在年依然持續(xù)火熱,本文將對(duì)熱點(diǎn)事件做一個(gè)總結(jié)。版的和協(xié)議在前端領(lǐng)域,一直獨(dú)占鰲頭。年又發(fā)布了一個(gè)重大的版本更新。主要是配合使用了服務(wù)工作線(xiàn)程。而且還提供了供前端開(kāi)發(fā)者接入??焖侔l(fā)布了和在悄悄地跳過(guò)之后,在月號(hào)正式發(fā)布。 譯者按: 老技術(shù)日趨成熟,新技術(shù)層出不窮。 原文: A recap of front-end development in 2017 譯者: Fundebu...

    lmxdawn 評(píng)論0 收藏0
  • 前端每周清單第 43 期:2017 JavaScript 回顧、Rust 與 WebAssembly

    摘要:楊冀龍是安全焦點(diǎn)民間白帽黑客組織核心成員,被浪潮之巔評(píng)為中國(guó)新一代黑客領(lǐng)軍人物之一他在本文中依次分享了對(duì)于黑客的定義如何從黑客成為一名安全創(chuàng)業(yè)者技術(shù)創(chuàng)業(yè)踩過(guò)的坑給技術(shù)創(chuàng)業(yè)者建議等內(nèi)容。 showImg(https://segmentfault.com/img/remote/1460000012377230?w=1240&h=796); 前端每周清單專(zhuān)注前端領(lǐng)域內(nèi)容,以對(duì)外文資料的搜集為...

    xorpay 評(píng)論0 收藏0
  • javascript基礎(chǔ)篇小結(jié)

    摘要:表示尚未存在的對(duì)象是一個(gè)有特殊意義的值??梢詾樽兞抠x值為,此時(shí)變量的值為已知狀態(tài)不是,即。用來(lái)初始化變量,清除變量?jī)?nèi)容,釋放內(nèi)存結(jié)果為但含義不同。且它倆與所有其他值比較的結(jié)果都是。,需要兩個(gè)操作數(shù)同時(shí)轉(zhuǎn)為。 轉(zhuǎn)載請(qǐng)聲明出處 博客原文 隨手翻閱以前的學(xué)習(xí)筆記,順便整理一下放在這里,方便自己復(fù)習(xí),也希望你有也有幫助吧 第一課時(shí) 入門(mén)基礎(chǔ) 知識(shí)點(diǎn): 操作系統(tǒng)就是個(gè)應(yīng)用程序 只要是應(yīng)用...

    hiyang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

youkede

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<