js深刻理解--數(shù)據(jù)類型

數(shù)據(jù)類型

js中的基本數(shù)據(jù)類型, 分別為 string, number, boolean, undefined, function, object, symbol 以及未來的 BigInt.

值類型

保存在 中, 每次復(fù)制與賦值操作的都是變量本身的值

const a = 1;
const b = 1;
const c = true;
const d = false;
console.log(a === b); // true
console.log(c === d); // true

注意: 簡單類型 !== 值類型

const a = 1;
const b = new Number(1);

a === b; // ? false
a.length = 2;
b.length = 2;
a.length // ? undefined
b.length // ? 2

// 大坑
const c = new String('');
c.length // ? 0
c.length = 2;
c.length // ? 0

引用類型

保存在堆中, 在賦值等操作實際操作的是對象的內(nèi)存地址.

  1. function外, 通過 typeof 不能判斷其準(zhǔn)確類型
  2. 在操作引用類型是一定注意深拷貝和淺拷貝
  3. 使用 instanceofObject.prototype.toString.call 來判斷其精確類型
const a = {};
const b = {};
a === b; // false

const a = {test: 1};
const b = a;
b.test = 2;
a.test // 2
// 分析
// eg1
a = {n: 1};
a.x = a = {n: 2}
a.x  // ?

// eg2

a = {n: 1};
b = a;
a.x = a = {n: 2}
a.x // ?
b.x // ?
最后編輯于
?著作權(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ù)。

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