一、值型別 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
//const arr = [10, 20, 30, 40, 50, 60];slice
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]
//const arr = [10, 20, 30, 40, 50, 60];splice 非純函式
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...