javascript數(shù)據(jù)類型的示例分析

這篇文章將為大家詳細(xì)講解有關(guān)javascript數(shù)據(jù)類型的示例分析,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

東海ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

1. undefined 和 null

undefined是一個(gè)變量而不是一個(gè)關(guān)鍵字,所以可以被重新賦值。為了避免歧義,一般推薦用void 0 來獲取undefined;

null是一個(gè)關(guān)鍵字,所以可以放心地使用null。

Undefined 跟 null 有一定的表意差別,null 表示的是:“定義了但是為空”。所以,在實(shí)際編程時(shí),我們一般不會(huì)把變量賦值為 undefined,這樣可以保證所有值為 undefined 的變量,都是從未賦值的自然狀態(tài)?!?/p>

function test(){
  var undefined = 123;
  console.log(undefined) 
}
test() ==> 123

2. +0 和 -0

JavaScript 中有 +0 和 -0,在加法類運(yùn)算中它們沒有區(qū)別,要區(qū)別他們的話,需要使用1/x 

3/0 ==> Infinity
3/-0 ==> -Infinity

3. 0.1 + 0.2 = 0.3?

在JS中,0.1+0.2是不等于0.3的,因?yàn)?.1在計(jì)算機(jī)中用二進(jìn)制表示的話,會(huì)產(chǎn)生無限循環(huán)位數(shù)。類似于十進(jìn)制中,三分之一就是無限循環(huán)小數(shù)。

所以對這些循環(huán)小數(shù)進(jìn)行數(shù)學(xué)運(yùn)算時(shí),并將二進(jìn)制數(shù)據(jù)再轉(zhuǎn)換成十進(jìn)制時(shí),也還是無線循環(huán)小數(shù),對末尾進(jìn)行截取后,得到的值就是0.30000000000000004

正確的比較方法是使用JS提供的最小精度值,檢查等式左右兩邊差的絕對值是否小于最小精度

Math.abs(0.1 + 0.2 - 0.3) <= Number.EPSILON
true

4. 666 和 new Number(666)的區(qū)別

666是一個(gè)number類型的數(shù)字,而Number(666)是一個(gè)對象類型的數(shù)據(jù)。

‘HELLO'.charAt(1) ==》 'E'

上門代碼中,點(diǎn)(.)運(yùn)算符提供了裝箱操作,會(huì)根據(jù)一個(gè)基礎(chǔ)類型構(gòu)造一個(gè)臨時(shí)對象,所以能在基礎(chǔ)類型上調(diào)用對應(yīng)對象的方法

5. parseInt 和 parseFloat

parseInt(string, radix)

javascript數(shù)據(jù)類型的示例分析

parseInt(15,6)
11 ==> 1*6+5

parseInt(0x15) 
21 ==> 16*1+5

parseFloat 則直接把原字符串作為十進(jìn)制來解析,它不會(huì)引入任何的其他進(jìn)制

6. 裝箱轉(zhuǎn)換

每一種基本類型 Number、String、Boolean、Symbol 在對象中都有對應(yīng)的類,所謂裝箱轉(zhuǎn)換,正是把基本類型轉(zhuǎn)換為對應(yīng)的對象。

Symbol 比較特殊,不能直接用 new Symbol獲得對應(yīng)的對象, 可以用Object(Symbol('hello')) 來獲得。

 var symbolObject = Object(Symbol("a"));

  console.log(typeof symbolObject); //object
  console.log(symbolObject instanceof Symbol); //true
  console.log(symbolObject.constructor == Symbol); //true

7. 拆箱轉(zhuǎn)換

把對象轉(zhuǎn)換成number或string時(shí),會(huì)默認(rèn)進(jìn)行拆箱轉(zhuǎn)換,即會(huì)調(diào)用對象內(nèi)置的toString或者valueOf方法將對象轉(zhuǎn)換成基本類型

javascript數(shù)據(jù)類型的示例分析

這兒定義了一個(gè)obj對象,重寫了它的valueOf和toString方法進(jìn)行測試,可以看到,當(dāng)Number(obj)時(shí),valueOf優(yōu)先于String執(zhí)行,但是當(dāng)這2個(gè)方法都沒有返回基本類型的數(shù)據(jù)時(shí),就會(huì)產(chǎn)生錯(cuò)誤。

 javascript數(shù)據(jù)類型的示例分析

當(dāng)valueOf方法返回基本類型的數(shù)據(jù)時(shí),成功將obj轉(zhuǎn)換成了數(shù)字,而且toSring方法沒有執(zhí)行。

 javascript數(shù)據(jù)類型的示例分析

當(dāng)valueOf返回非基本類型時(shí),toString方法才會(huì)被調(diào)用。只有當(dāng)Object到 String 的拆箱轉(zhuǎn)換才會(huì)優(yōu)先調(diào)用 toString方法。

 注:ES6允許對象通過顯式指定 toPrimitive Symbol 來覆蓋原有的行為。

var o = {
    valueOf : () => {console.log("valueOf"); return {}},
    toString : () => {console.log("toString"); return {}}
  }

  o[Symbol.toPrimitive] = () => {console.log("toPrimitive"); return "hello"}


  console.log(o + "")
  // toPrimitive
  // hello

關(guān)于“javascript數(shù)據(jù)類型的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯(cuò),請把它分享出去讓更多的人看到。

網(wǎng)站標(biāo)題:javascript數(shù)據(jù)類型的示例分析
本文地址:http://bm7419.com/article16/pcepgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、用戶體驗(yàn)、定制開發(fā)商城網(wǎng)站、網(wǎng)站設(shè)計(jì)公司網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化