js原始型別有哪幾種 , null是物件嗎?
boolean ,number ,null ,undefined ,string ,symbol
另外對於null
來說,很多人會認為他是個物件型別,其實這是錯誤的。雖然typeof null
會輸出object
,但是這只是 js 存在的乙個悠久 bug。在 js 的最初版本中使用的是 32 位系統,為了效能考慮使用低位儲存變數的型別資訊,000
開頭代表是物件,然而null
表示為全零,所以將它錯誤的判斷為object
。雖然現在的內部型別判斷**已經改變了,但是對於這個 bug 卻是一直流傳下來。
物件型別和原始型別的不同之處?函式引數是物件會發生什麼問題?
在js中除了原始型別其他都是物件型別 , 原始型別儲存的是值,物件型別儲存的是位址(指標)
假設 var a =
那麼就是代表儲存的位址
函式引數是物件的情況:
function test(person)
return person
}const p1 =
const p2 = test(p1)
console.log(p1) // -> ?
console.log(p2) // -> ?
對於以上**,你是否能正確的寫出結果呢?接下來讓我為你解析一番:
所以最後person
擁有了乙個新的位址(指標),也就和p1
沒有任何關係了,導致了最終兩個變數的值是不相同的。
對於原始型別typeof,除了null以外都可以判斷型別,如果我們想判斷乙個物件的正確型別可以用instanceof
在js中只有三種型別轉換分別為 :boolean , number , string
在條件判斷時,除了undefined
,null
,false
,nan
,''
,0
,-0
,其他所有值都轉為true
,包括所有物件。
物件在轉換型別的時候,會呼叫內建的[[toprimitive]]
函式,對於該函式來說,演算法邏輯一般來說如下:
加法運算子不同於其他幾個運算子,它有以下幾個特點:
如果是物件,就通過toprimitive
轉換物件
如果是字串,就通過unicode
字元索引來比較
JS基礎知識點
1.js基本資料型別 number 數字型別 string 字串 boolean 布林型別 ture false 非0即為真 null 空值 有值,值為空 undefined 未定義的 沒有值 object 物件型別 array 陣列 js語言特點 1.解釋性執行,指令碼語言 2.物件導向 一切事物...
js基礎知識點及常考知識點 一
涉及面試題 原始型別有哪幾種?null 是物件嘛?在js中,存在著6中原始值,分別是 typeof string function typeof string undefined typeof string string 除了會在必要的情況下強轉型別以外,原始型別還有一些坑。最為明顯的就是js的0....
JS基礎知識點梳理
1.資料型別 ecmascript有五種簡單 基本 資料型別,分別是undefined,null,boolean,number,string,還有一種複雜資料型別object。物件可以理解成一組資料和功能的集合。可以通過new object 方法來建立。js不支援自己建立資料型別。鑑於資料型別是鬆散...