我們簡單的把所有數(shù)據(jù)類型分為兩個大類 基本數(shù)據(jù)類型 和 復(fù)雜數(shù)據(jù)類型
基本數(shù)據(jù)類型: number / string / boolean / undefined / null
復(fù)雜數(shù)據(jù)類型: object / function? /? array / ...
內(nèi)置構(gòu)造函數(shù)創(chuàng)建數(shù)組
// 創(chuàng)建一個空數(shù)組
var arr1 = new Array()
// 創(chuàng)建一個長度為 10 的數(shù)組
var arr2 = new Array(10)
// 創(chuàng)建一個有內(nèi)容的數(shù)組
var arr3 = new Array(1, 2, 3)
數(shù)組的 length
arr.length
數(shù)據(jù)類型之間存儲的區(qū)別(重點)

既然我們區(qū)分了基本數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型
那么他們之間就一定會存在一些區(qū)別
他們最大的區(qū)別就是在存儲上的區(qū)別
我們的存儲空間分成兩種 棧 和 堆
棧: 主要存儲基本數(shù)據(jù)類型的內(nèi)容
堆: 主要存儲復(fù)雜數(shù)據(jù)類型的內(nèi)容
基本數(shù)據(jù)類型在內(nèi)存中的存儲情況
var num = 100,在內(nèi)存中的存儲情況
直接在 ??臻g 內(nèi)有存儲一個數(shù)據(jù)
復(fù)雜數(shù)據(jù)類型在內(nèi)存中的存儲情況
下面這個 對象 的存儲
varobj={
name:'Jack',
age:18,
gender:'男'
}
復(fù)雜數(shù)據(jù)類型的存儲
在堆里面開辟一個存儲空間
把數(shù)據(jù)存儲到存儲空間內(nèi)
把存儲空間的地址賦值給棧里面的變量
這就是數(shù)據(jù)類型之間存儲的區(qū)別

數(shù)組常用的方法
語法:? 數(shù)組.pop? 以下都相同
1.pop刪除數(shù)組末尾的一個元素
2.shift刪除數(shù)組最前面的一個元素?
3.unshift在數(shù)組的最前面添加一個元素
4.push末尾追加一個元素
5.reverse反轉(zhuǎn)數(shù)組 arr.reverse()
6.splice按照數(shù)組的索引來截取
splice(參數(shù)1,參數(shù)2,參數(shù)3)
參數(shù)1:從索引下標(biāo)開始
參數(shù)2:個數(shù)
參數(shù)3:在截取后用參數(shù)3替代被截取的數(shù)
(第三個參數(shù)可以不寫)
7.slice按照數(shù)組的索引來截取
slice(參數(shù)1,參數(shù)2)參數(shù)1索引起始,參數(shù)2索引結(jié)束但不包括本身
7.sort 數(shù)組排序 arr.sort()
8.concat 是把多個數(shù)組進(jìn)行拼接
和之前的方法有一些不一樣的地方,就是 concat 不會改變原始數(shù)組,而是返回一個新的數(shù)組
9. join
join 是把數(shù)組里面的每一項內(nèi)容鏈接起來,變成一個字符串
可以自己定義每一項之間鏈接的內(nèi)容 join(要以什么內(nèi)容鏈接)
不會改變原始數(shù)組,而是把鏈接好的字符串返回
