JS裝箱操作和拆箱操作的理解

2022-08-31 13:09:11 字數 1197 閱讀 8421

一、裝箱操作

定義:把基本資料型別轉換為對應的引用型別的操作稱為裝箱。

每一種基本型別number、string、boolean在物件中都有相應的類(產生的臨時物件),然後呼叫·tostring()方法。

例如 1 .tostring() => '1';

呼叫過程把1進行裝箱操作轉換成number的臨時物件呼叫tostring()的方法;

在這裡1後邊是乙個空格,這是因為1.tostring()會報錯(報錯的原因是不符合js規範,不懂得可以查一下),也可以寫成(1).tostring();

二、拆箱操作

定義:把引用型別轉換為基本的資料型別稱為拆箱。

將物件轉換成原始型別的值進行拆型操作,呼叫toprimitive()方法;toprimitive(input,preferedtype),該方法有兩個引數,input和preferedtype;

input  輸入  物件

preferedtype  輸出   字串 || 數字

例如:1、   =>  ' ' 

這個會輸出空字串,是因為 會先進行.valueof() ,還是輸出;再進行.tostring()方法,返回"";所以 + 輸出 "";

2、+{}  =>  「[object object]」

這個拆箱後是"";{}先進行({}).valueof() ,還是輸出{};再進行({}).tostring()方法,返回"[object object]";所以 + {} 相當於"" + "[object object]",於是 + {}  =>  「[object object]」;

注意{}在進行拆箱操作的時候這裡加上了();{}有兩個含義:乙個是**塊,乙個是物件的字面量;{}.tostring()在執行的時候會報錯,以為**塊是沒有tostring()方法的。

3、{}+ => 0

在上一條我們已經知道{}可以認為是乙個**塊,所以{}+ 就相當於 +,所以返回的是0。

三、在這裡提一下 == 和 === 

1、== 

進行隱式轉換 並且拆箱操作

2、===

不進行隱式轉換但是會拆箱操作

注意:乙個物件和乙個原始值比較會進行拆箱操作,兩個物件進行比較就不進行拆箱操作了。

比如{}+ === 0 => true 

{}==={} => false;這裡兩個空物件不全等,涉及到記憶體位址的問題,這兩個對應不同的記憶體位址,所以返回fasle。

js名詞解釋 裝箱操作和拆箱操作

js是弱資料型別語言,即它宣告的變數,可以被賦值成不同型別的資料.也就是說,同乙個變數.我可以先是基礎資料型別,然後馬上被賦值成引用資料型別 也可以先是引用資料型別,然後被賦值成基礎資料型別.let a 你好 console.log a 你好 let b new string 你好 console....

C 裝箱 拆箱 理解

裝箱和拆箱是值型別和引用型別之間相互轉換是要執行的操作。1.裝箱在值型別向引用型別轉換時發生 2.拆箱在引用型別向值型別轉換時發生 光上述兩句話不難理解,但是往深處了解,就需要一些篇幅來解釋了。我們先看裝箱時都會發生什麼事情,下面是一行最簡單的裝箱 objectobj 1 這行語句將整型常量1賦給o...

js 拆箱和裝箱

js拆箱 裝箱 把基本資料型別轉化為對應的引用資料型別的操作 1 tostring new number 1 tostring js拆箱 拆箱 將引用型別物件轉換為對應的值型別物件 物件型別 基本型別 valueof 檢測返回的型別是不是乙個基本型別 tostring 檢測返回的型別是不是乙個基本型...