js的資料型別
在es5的時候,我們認知的資料型別確實是 6種:number、string、boolean、undefined、object、null。
es6 中新增了一種 symbol 。這種型別的物件永不相等,即始建立的時候傳入相同的值,可以解決屬性名衝突的問題,做為標記。
其中:基本型別(單型別):除object。 string、number、boolean、null、undefined。
引用型別:object。裡面包含的 function、array、date。
資料型別的記憶體圖
棧:是有結構的,每個區塊按照一定的次序存放。主要處理各種基本型別,包括null,undefined,boolean,number,string,bigint,以及物件的引用(即指標)。
堆:是沒有結構的,資料可以任意存放。主要處理引用型別: 物件、陣列、函式等。首先從棧中獲得該物件的位址指標,然後在從堆中取得資料。
遇到的乙個面試題:const定義的值能修改麼?
以平時的經驗是不能的,但是平時我們使用const定義的值一般都是基本型別,它們的確不能被修改。但是如果使用const定義乙個物件,這個物件的值是可以修改的。本質是什麼?原因就是const定義物件的時候,我們說的常量其實就是上圖中棧中的指標,就是const物件對應堆記憶體的指向是不變的,只要指向不變,修改這個物件的屬性是可以的。看下面的**:
修改了a,報錯
const obj =
;obj.a =2;
console.
log(obj)
;//不報錯
== 和 ===的區別
== :不管資料型別是否相同,在資料型別的轉換後相同即成立
===:如果資料型別不同直接為false
null 和 undefined 的區別
console.
log(
typeof
(undefined));
//undefined
console.
log(
typeof
(null))
;//object
console.
log(undefined ==
null
)//true
console.
log(undefined ===
null
)//false
console.
log(
number
(null))
;//0
console.
log(
number
(undefined));
//nan
//if語句中都為false
// null表示乙個值被定義了,但是這個值是空值
// undefined表示缺少值,即此處應該有值,但是還沒有定義
[阮一峰老師文章有提及](
JS資料型別之基礎資料型別
基本資料型別是按值訪問的,也就是說我們可以操作儲存在變數中的實際的值 基本資料型別的值是不可改變的,任何方法都無法改變乙個基本資料型別的值。let name qin ling ling name lisi console.log name 輸出 lisi上面的例子看來name的值好像變了,這裡的基礎...
JS資料型別總結整理
js 資料型別 字串 布林 數字 物件 element null 函式 未定義 1 檢測資料型別 typeof 運算子 charat 根據字串下標來獲取子字串 var a miaov alert typeof a string alert a.length 5 alert a.charat 2 ch...
js資料型別基礎
一.資料型別 資料型別包括 基本資料型別和引用資料型別 基本資料型別指的是簡單的資料段,引用資料型別指的是有多個值構成的物件。當我們把變數賦值給乙個變數時,解析器首先要確認的就是這個值是基本型別值還是引用型別值 var a 123 typeof 檢查當前變數是什麼資料型別 console.log t...