JS 資料型別和深複製淺複製

2021-10-05 05:21:42 字數 2615 閱讀 7704

(1)基本資料型別:

undefined、null、number、string、boolean、symbol(es6新增,表示獨一無二的值,常用來定義物件的唯一屬性名)

number包括整數、浮點數和nan,nan(非數值):用於表示乙個本來要返回值但是未返回值的情況;

undefined和null區別:undefined是宣告了變數但未初始化,null表示乙個空物件指標,如果該變數將來用於儲存物件,就可以設定它為null。

(2)引用資料型別:

只有一種,即object,我們所說的array和function其實底層原型鏈都是繼承的object。

驗證方法如下,所有的列印結果都為true:

let o = new object();

console.log(o.__proto__==object.prototype); //true

let a =;

console.log(a.__proto__.__proto__==object.prototype); //true

let fn =function()

console.log(fn.prototype.__proto__==object.prototype); //true

console.log(function.prototype.__proto__==object.prototype); //true

(3)typeof 檢測給定變數的資料型別:

let n = null; 

console.log(typeof n) //object

let o = new object;

console.log(typeof o) //object

let a = ;

console.log(typeof a) //object

console.log(typeof 1/0); //nan

let c = typeof 12;

console.log(typeof(c)) //string

nan==nan //false

object.is(nan, nan) //true

undefined==null //true

0==true //false

1==true //true

2==true //false

object.is(+0, -0); //false

+0 === -0; //true

(4)獲取js資料具體資料型別(重點!!!)

let arr = [1,2,3,4];

//用這個方法來獲取資料的具體型別

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

//用這個只能獲取object,無法具體的資料型別

console.log(typeof arr) // object

(5)==、===和object.is()的區別

(6)parseint(string,radix):

string:要被解析的字串;

radix:可選。表示要解析的數字的基數。該值介於 2 ~ 36 之間。如果省略該引數或其值為 0,則數字將以 10 為基礎來解析。如果它以 「0x」 或 「0x」 開頭,將以 16 為基數如果該引數小於 2 或者大於 36,則 parseint() 將返回 nan。

console.log(parseint(3, 8));    //3

console.log(parseint(3, 2)); //nan

console.log(parseint(2, 1)); //nan

console.log(parseint(3, 0)); //3

console.log(parseint(1, 0)); //1

console.log(parseint(8, 0)); //8

經典題:console.log(["1","2","3"].map(parseint))列印什麼?

相當於問parseint(1,0)、parseint(2,1)、parseint(3,2)列印什麼,所以答案為[1, nan, nan]

foreach、some、map、filter:

將乙個陣列賦給另外乙個陣列,有兩種方式,分別為淺複製和深複製。

深複製:而深複製則是開闢新的棧,兩個物件對應兩個不同的位址,修改乙個物件的屬性,不會改變另乙個物件的屬性

js深複製淺複製

深淺複製主要是針對於js的引用資料型別的,因為他們不只一層,並且修改乙個變數是不希望修改到另外乙個變數。淺複製 只複製指向某個物件的指標,新舊物件共享一塊記憶體,修改新物件會改到原物件上。深複製 不共享記憶體,修改新物件不會改到原物件上。淺複製實現 js 簡單的賦值操作一般實現的都是淺複製。深複製實...

淺複製和深複製

在c 中,下面三種物件需要呼叫拷貝建構函式 有時也稱 複製建構函式 1 乙個物件作為函式引數,以值傳遞的方式傳入函式體 全域性函式,傳入的是物件 void g fun resume c 2 乙個物件作為函式返回值,以值傳遞的方式從函式返回 全域性函式 返回的是物件 resume g fun 3 乙個...

深複製和淺複製

以下 是否完全正確,執行可能得到的結果是 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class a class b b void sayhello b b int main 程式正常執行 程式編譯錯誤 程式崩潰 程式死迴圈 這個程式會直接崩潰 voidsayhello ...