JS 里的數(shù)據(jù)類型轉(zhuǎn)換

前面介紹過JS的數(shù)據(jù)類型,總共有七種數(shù)據(jù)類型。number、string、boolean、symbol、null、undefined屬于簡單數(shù)據(jù)類型,object屬于復(fù)雜數(shù)據(jù)類型。
在前端開發(fā)過程中,使用數(shù)據(jù)類型的方式也不單單是聲明后使用,有的時候,需要轉(zhuǎn)換數(shù)據(jù)類型來使用,這里就講講數(shù)據(jù)類型的轉(zhuǎn)換。

轉(zhuǎn)換為字符串

  1. 轉(zhuǎn)化為字符串,可以用xxx.toString()方法,不過并不是所有的類型都可以用這個方法來轉(zhuǎn)換,number、boolean可行,null、undefined不可行,object可行,但是輸出結(jié)果不是想要的結(jié)果。
(1).toString()  //   '1'
true.toString()  //   'true'
null.toString()  //  語法錯誤:Cannot read property 'toString' of null
undefined.toString()  //  語法錯誤: Cannot read property 'toString' of undefined
({}).toString()  //   '[object Object]'
  1. 除了xxx.toString()以外,還有一個比較快捷全面的方法String(xxx),這個方法,number、boolean、null、undefined都可以轉(zhuǎn)化為字符串。
String(1)  //   '1'
String(true)  //   'true'
String(null)  //   'null'
String(undefined)  //    'undefined'
String({})  //    '[object Object]'
  1. String(xxx)方法很快捷,但還有一個更加快捷全面的方法,就給轉(zhuǎn)換的類型 + 空字符串'',這個方法和String()方法差不錯,可以多省去幾個字符。
1 + '' //   '1'
true + ''  //   'true'
null + ''  //   'null'
undefined + '' //   'undefined'
var o ={}
o + ''//    '[object Object]'

轉(zhuǎn)換為數(shù)字

轉(zhuǎn)換為數(shù)字的方法有大概有五種:

  1. Number(x)
Number('1')   // 1
Number('a')   // NaN
  1. parseInt(x,10),轉(zhuǎn)換為十進制的整數(shù)。parseInt是一個全局函數(shù)
parseInt('1' ,10)   // 1
  1. parseFloat(x)轉(zhuǎn)化為小數(shù)(parse是解析的意思)
parseFloat('1.23' ,10)   // 1.23
  1. x-0,要轉(zhuǎn)換的字符減去0,就會得到一個數(shù)值類型的值。這種方法是最常用的方法。
'1' - 0  // 1
'1.23' - 0  //1.23
  1. +x,取正,給要轉(zhuǎn)換的字符前一個加號+,取正,就會得到一個數(shù)值類型的。
+'1'  // 1
+'1.23'  //1.23

轉(zhuǎn)換為布爾

● 轉(zhuǎn)為布爾,使用Boolean(xxx)
● object的Boolean(object),對象都會返回true。
● 除了使用Boolean(),還有有一種更快捷的方式,!!xxx 使用兩個取反符號,取反再取反,就可以返回自己的布爾,這是常用的方法。
● 轉(zhuǎn)換布爾的時候,只有五個特殊的值是false,五個falsy值,數(shù)值中的0NaN,字符串中的 '' 空字符串,nullundefined。

Boolean(1) // true
Boolean(0) // false
Boolean(NaN) // false
Boolean('a') // true
Boolean('') // false
Boolean(' ') // true
Boolean(null) // false
Boolean('undefined') //  false
Boolean({}) //true

轉(zhuǎn)換為null和轉(zhuǎn)換為undefined

這兩個都只有一個值,沒必要轉(zhuǎn)換,直接使用就可以。

轉(zhuǎn)換為symbol

symbo是ES6新出的類型,這里先不討論太多

轉(zhuǎn)換為object

轉(zhuǎn)換為對象object,這個轉(zhuǎn)換方式很奇怪。要想轉(zhuǎn)換為對象,就得理解其他類型和對象有什么區(qū)別。

內(nèi)存

內(nèi)存,就是我們電腦當(dāng)中的內(nèi)存,用來儲存一些數(shù)據(jù)的一個硬件。

JS 引擎將內(nèi)存分為代碼區(qū)和數(shù)據(jù)區(qū),這里我們就只講數(shù)據(jù)區(qū)。
數(shù)據(jù)區(qū)分為Stack(棧內(nèi)存)和Heap(堆內(nèi)存),簡單類型的數(shù)據(jù),直接儲存在Stack棧內(nèi)存中,復(fù)雜類型的數(shù)據(jù),儲存在Heap中,然后把Heap地址寫在Stack棧內(nèi)存中引用。

內(nèi)存示意圖
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言:之前的博客介紹了JS中的各種數(shù)據(jù)類型,那么可不可以把已經(jīng)確定的數(shù)據(jù)類型轉(zhuǎn)換成其他的數(shù)據(jù)類型呢?本文就將介紹一...
    EnochQin閱讀 634評論 0 3
  • 內(nèi)容: 類型轉(zhuǎn)換 五個falsy值 內(nèi)存圖 垃圾回收 深淺拷貝 強制轉(zhuǎn)換 一. 任意類型轉(zhuǎn)Number 五種...
    加油吧_閱讀 230評論 0 0
  • 強制轉(zhuǎn)換 強制轉(zhuǎn)換主要指使用Number、String和Boolean三個函數(shù),手動將各種類型的值,分布轉(zhuǎn)換成數(shù)字...
    遠_閱讀 322評論 0 0
  • 數(shù)據(jù)類型的轉(zhuǎn)換可分為強制轉(zhuǎn)換和自動轉(zhuǎn)換。 強制轉(zhuǎn)換 強制轉(zhuǎn)換主要指使用Number、String和Boolean三...
    饑人谷_sunny閱讀 291評論 0 0
  • 周中雜記: 最近工作上帶我的姐姐和我反映,感覺有時候我做出的反應(yīng)或者說對情況的描述有些夸張,我問具體情況,她說會比...
    心一書簡閱讀 244評論 1 1

友情鏈接更多精彩內(nèi)容