JS基礎 變數 陣列

2022-08-11 07:36:09 字數 3907 閱讀 6721

一、值型別 vs 引用型別

值型別引用型別

值直接儲存在棧中

值儲存在堆中,再將堆的位址存到棧中

number, string, boolean, undefined, symbol

object, array, null

變數之間賦值 a = b,是指直接將棧中變數a的值複製到變數b的棧空間裡面;

之後對兩個變數值的修改相互不影響

變數之間賦值 a = b,只複製棧中儲存的變數a的值在堆裡的位址,賦值以後ab指向堆中同乙個位址;

改變任一變數的值,另一變數的值也隨之改變

二、typeof型別判斷

typeof用於判斷變數型別,返回乙個表示變數型別的string(首字母小寫),其識別結果可分為以下三類:

console.log(typeof 1);  //

"number"

console.log(typeof "1"); //

"string"

console.log(typeof

true); //

"boolean"

console.log(typeof undefined); //

"undefined"

console.log(typeof anewvar); //

"undefined"

let myfun = function

()console.log(

typeof myfun); //

"function"

let arr = [1, 2, 3];

let obj =

}console.log(

typeof arr); //

"object"

console.log(typeof obj); //

"object"

console.log(typeof obj.b); //

"object"

console.log(typeof

null); //

"object"

三、型別轉換

顯式型別轉換:

let inta = parseint("100");

let floata = parsefloat(inta);

隱式型別轉換:

console.log(100 + "10"); //

"10010"

console.log(true + "10"); //

"true10"

四、陣列

1. split() 和 join()

split 將字串根據指定字元拆分成陣列,join將陣列元素用指定字元連線成字串。

console.log('1-2-3'.split('-')); //[1,2,3]

console.log([1,2,3].join('-')); //'1-2-3'

2. pop(), push(), shift(), unshift()

poppush

shift

unshift

功能刪除陣列最後乙個元素

在陣列末尾插入乙個元素

刪除陣列第乙個元素

在陣列開頭插入乙個元素

引數arr.pop()

arr.push(1)

arr.shift()

arr.unshift(1)

返回值返回被刪除的元素

返回length

返回被刪除的元素

返回length

是否改變原陣列是是

是是3. 陣列的純函式api(不改變原陣列,返回乙個新的陣列)

concat, map, filter, slice

const arr = [10, 20, 30];

//concat

const arrconcat = arr.concat([40, 50]);

//map

const arrmap = arr.map(num => num*2);

//filter

const arrfilter = arr.filter(num => num % 3 === 0);

//slice

const arrslice = arr.slice();//

相當於深拷貝

4. 陣列的非純函式api

pop, push, shift, unshift 改變原陣列

foreach, some, every, reduce 不返回新陣列

5. slice vs splice

//

slice

const arr = [10, 20, 30, 40, 50, 60];

const arrslice = arr.slice();//

相當於深拷貝

const arrslice2 = arr.slice(1, 4); //

[20, 30, 40] 左閉右開

const arrslice3 = arr.slice(2);//

[30, 40, 50, 60]

const arrslice4 = arr.slice(-2); //

[50, 60]

//

splice 非純函式

const arr = [10, 20, 30, 40, 50, 60];

const spliceres = arr.splice(1, 3, 'a','b','c','d'); //

起點,刪除個數,新插入的序列

console.log(spliceres);//

返回被刪除的陣列片段[20, 30, 40]

console.log(arr);//

剪接後的陣列[10, "a", "b", "c", "d", 50, 60]

0, 'a', 'b'); //

不剪下,從位置1開始直接插入[10, "a", "b", 20, 30, 40, 50, 60]

3);//

只刪除,不插入[10, 50, 60]

對比:slice

splice

功能擷取陣列片段

替換陣列片段

引數slice(1, 4)

擷取起點,擷取終點

左閉右開

splice(1, 4, 'a', 'b')

插入起點,刪除個數,插入元素

返回值擷取的新陣列

被刪除的陣列片段

是否為純函式

是否(原陣列被改變)

6. [10, 20, 30].map(parseint)

parseint(string, radix)

string: 必需。被解析的字串。

radix: 可選。解析的數字的奇數(將字串按什麼進製解析),值介於2-36。

const arr2 = [10, 20, 30];

const arr2map = arr2.map((num, index) => parseint(num, index));

const arr2map = arr2.map((num, index) =>);

即對10,20,30分別執行:

10 -> parseint('10',  0); //

傳入0預設為10進製

20 -> parseint('20', 1); //

基數為1,不在2-36之間,返回nan

30 -> parseint('30', 2); //

基數為2,但30不是二進位制數,返回nan

故最終返回新陣列:[10, nan, nan]

js 基礎 變數

1,變數 可以存放任意型別的資料 宣告變數的方式 使用關鍵字 var var 變數名 宣告變數未賦值,預設值為undefined 變數名 資料 給變數賦值 var 變數名 資料 宣告並賦值 初始化 注意事項 使用變數前要先宣告,否則程式會報錯 宣告變數未賦值,預設值為undefined 2,變數命名...

js 陣列基礎

構造方法 new array new array a b 使用陣列物件的方法 棧佇列問題 objarray.pop 通俗的講,就是彈出陣列的最後乙個元素。objarray.push value1 value2 將引數新增到陣列的結尾。objarray.unshift item1 item2 將引數列...

JS基礎 陣列

陣列的概念 由於變數只能儲存乙個值,陣列可以儲存一組相關資料,陣列中的每個資料稱為元素,陣列中可以儲存任意型別的元素。var arr 1,2,3,4,5 陣列的建立方式 1.陣列字面量建立 宣告陣列並賦值稱為陣列的初始化 var arr 1,2,3,4,5 var 陣列名 2.利用new建立 var...