js的資料型別判斷和深 淺拷貝的理解

2021-09-05 10:39:05 字數 1669 閱讀 7950

(18.12.26)

js的資料型別分為基本資料型別和引用資料型別。

基本資料型別包括五個number,string,boolean,undefined,null。

引用資料型別就有很多如array,object,function等等。

判斷資料型別有以下三個方法:

一,typeof

使用

var a = ;

var b = null;

var c = 1;

console.log(typeof a); //object

console.log(typeof b); //object

console.log(typeof c); //number

typeof只適用於基本資料型別,而且用null時會判定為object

二,instanceof

使用

var a = ;

var b = null;

var c = "1";

console.log( a instanceof array); //true

console.log(b instanceof object); //false

console.log(c instanceof string); //false

instanceof一般用來判斷引用資料型別如object和array等

三,最準確的判斷方式object.prototype.tostring.call(a)

var a = ;

var b = null;

var c = "1";

console.log(object.prototype.tostring.call(a)); //[object array]

console.log(object.prototype.tostring.call(b)); //[object null]

console.log(object.prototype.tostring.call(c)); //[object string]

它能準確的判斷所有型別,tostring返回這個物件的字串,用prototype是因為array和string原型中重寫tostring函式。

一,深拷貝

就是複製值有乙個新的記憶體,對目標完全拷貝,一者該變,不會影響。一般用在基本資料型別

var a = 123;

var b = a;

console.log(a); //123

console.log(b); //123

b = 456;

console.log(a);//123

console.log(b);//456

二,淺拷貝

就是只複製引用,沒有開闢新空間,一者改變,兩者一起變。一般用在引用資料型別

var a = [1,2,3];

var b = a;

console.log(a); //[ 1, 2, 3 ]

console.log(b); //[ 1, 2, 3 ]

b.push(4);

console.log(a); //[ 1, 2, 3, 4 ]

console.log(b); //[ 1, 2, 3, 4 ]

JS資料型別 深淺拷貝

1.基本資料型別有number,string,boolean,null,undefined,symbol es6新增的 也稱原始資料型別。2.js有原始值型別和引用值型別,var str hello str 0 z 無法修改 3.js記憶體分為堆記憶體和棧記憶體,棧記憶體儲存的都是有固定大小 空間的...

js資料型別的判斷

1 js資料型別有哪些?2 typeof可以判斷出哪些資料型別?3 陣列的資料型別如何判斷?4 有沒有乙個萬能的判斷資料型別的方法?js的資料型別有10種 數值 number 字串 string 布林值 boolean null undefined 陣列 array 物件 object map se...

js資料型別 判斷資料型別的方法和型別間的轉換

js資料型別 一 資料型別 一 基本資料型別 1 數值型別 大致可以看成兩類 整數型別和浮點型別 nan非數字型別 注意 infinity infinity與其他數值進行算術運算時,整個算術表示式將變成特殊值nan。infinity infinity可以進行比較運算,兩個infinity總是相等的,...