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

內(nèi)容: 類型轉(zhuǎn)換 五個(gè)falsy值 內(nèi)存圖 垃圾回收 深淺拷貝

強(qiáng)制轉(zhuǎn)換

一. 任意類型轉(zhuǎn)Number

五種方法

  1. Number(x)
  2. parseInt(x, 10)
  3. parseFloat(x)
  4. x - 0
  5. +x

轉(zhuǎn)換規(guī)則 參數(shù)是 基本類型 和 對(duì)象時(shí)是不同的

基本類型

  • 數(shù)值 : 不變
  • 字符串: 能解析為數(shù)字 Number(''324) //324
    不能解析位數(shù)字 Number('324abc') //NaN
    空字符串 Number('') //0
  • 布爾值 : true //1 false //1
  • undefined : NaN Number(undefined) // NaN
  • unll : 0 Number(null) //0

對(duì)象 : NaN

           Number({a;1})  //NaN
          Number([1,2,3])     //NaN
      除非是包含單個(gè)數(shù)值的數(shù)組    Number([5])  //5

二. 任意類型轉(zhuǎn)String

三種方式

    1. String(x)
    1. x.toString()
    1. ' ' + x 芳芳推薦**

數(shù)值 : 相應(yīng)字符串 123 //'123'

  • 字符串: 不變
  • 布爾值:true > "true" false > "false"
  • undefined : "undefined"
  • null : "null"
  • object對(duì)象:如果是對(duì)象,返回一個(gè)類型字符串 ; //"[object object ]"
  • 如果是數(shù)組,返回?cái)?shù)組的字符串形式。
  • String({a: 1}) // "[object object]"
  • String([1,2,3]) // '1,2,3'

#三. 任意類型轉(zhuǎn)布爾Boolean
兩種方法

    1. Boolean(x)
    1. !! x 芳芳推薦

五個(gè)falsy值,其他都是True

NaN null undefined 0(正負(fù)) ' ' (空字符串)

所有的對(duì)象全部都是true

自動(dòng)轉(zhuǎn)換 以強(qiáng)制轉(zhuǎn)換為基礎(chǔ)

以下三種情況,JavaScript 會(huì)自動(dòng)轉(zhuǎn)換數(shù)據(jù)類型,即轉(zhuǎn)換是自動(dòng)完成的,用戶不可見(jiàn)

  • 1.不同類型的數(shù)據(jù)互相運(yùn)算
    1. 對(duì)非布爾值類型的數(shù)據(jù)求布爾值
  • 3.對(duì)非數(shù)值類型的值使用一元運(yùn)算符(即+和-)
    建議在預(yù)期為布爾值、數(shù)值、字符串的地方,全部使用Boolean、Number和String函數(shù)進(jìn)行顯式轉(zhuǎn)換。

一. 自動(dòng)轉(zhuǎn)換為數(shù)值

除加法運(yùn)算符,其他運(yùn)算符都會(huì)把運(yùn)算轉(zhuǎn)為數(shù)值。

'5'-'2'  // 3            '5' * []  // 0      '5'  * '2'  //10
false/ '5'   // 0      true -'1' //0     'abc' - 1//NaN
false - 1 //-1       '1' - 1  // 0          undefined + 1  // NaN   
unll + 1 //1     + 'abc'  // NaN     - "abc"  //NaN

二 . 自動(dòng)轉(zhuǎn)換為布爾值 Boolean

條件部分轉(zhuǎn)為布爾

五個(gè)falsy

undefined NaN null 0 ' '
方法 : ① !!X (推薦) ②Boolean(x)

三.自動(dòng)轉(zhuǎn)為字符串

自動(dòng)轉(zhuǎn)換主要發(fā)生在字符串的加法運(yùn)算中

方法

  • 1 ' ' + x(芳芳推薦)
  • 2 window .String()
  • 3 x.toString()

深復(fù)制是什么鬼

var a = 1
var b = a
b = 2 //這個(gè)時(shí)候改變 b
a 完全不受 b 的影響
那么我們就說(shuō)這是一個(gè)深復(fù)制
對(duì)于簡(jiǎn)單類型的數(shù)據(jù)來(lái)說(shuō),賦值就是深拷貝。
對(duì)于復(fù)雜類型的數(shù)據(jù)(對(duì)象)來(lái)說(shuō),才要區(qū)分淺拷貝和深拷貝。

這是一個(gè)淺拷貝的例子

var a = {name: 'frank'}
var b = a
b.name = 'b'
a.name === 'b' // true

因?yàn)槲覀儗?duì) b 操作后,a 也變了

什么是深拷貝了,就是對(duì) Heap 內(nèi)存進(jìn)行完全的拷貝。

var a = {name: 'frank'}
var b = deepClone(a) // deepClone 還不知道怎么實(shí)現(xiàn)
b.name = 'b'
a.name === 'a' // true

內(nèi)存圖 與 垃圾回收

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

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

  • 第2章 基本語(yǔ)法 2.1 概述 基本句法和變量 語(yǔ)句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,518評(píng)論 0 13
  • 類型轉(zhuǎn)換1. 轉(zhuǎn)換為 字符串toString() 方法返回一個(gè)表示該對(duì)象的字符串 MDN語(yǔ)法:object.toS...
    半齋閱讀 329評(píng)論 0 0
  • JS里的類型 類型轉(zhuǎn)換 基本類型number string boolean symbol null undefin...
    鷓鴣少閱讀 304評(píng)論 0 0
  • 1 荒村生斷靄,古寺語(yǔ)流鶯。 建龍三年,農(nóng)歷七月十四日,在華州一個(gè)叫下奎的小山村,一聲響亮的啼哭從一所農(nóng)家小院傳出...
    逍遙一郎閱讀 677評(píng)論 1 5
  • 好久都沒(méi)有早上起來(lái)跑步了。還是起這么早的。跑完之后感覺(jué)還不錯(cuò)。等軍訓(xùn)完了,要繼續(xù)跑,不過(guò)就不是起這么早了。 大家繞...
    小小黑豬閱讀 177評(píng)論 0 0

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