1. 程式人生 > 實用技巧 >js陣列,物件,作用域

js陣列,物件,作用域

作用域:
一個變數可以使用的範圍:只有函式生成私有作用域
全域性作用域:當頁面開啟的時候就會生成
私有作用域:每一個函式都是一個私有作用域
當出現了私有作用域,就會分為上下級的情況
變數使用的範圍:
一個變數只能在自己作用域的內部使用,上級作用域不能使用,自己的下級作用域可以使用,訪問規則為:私有作用域沒有變數
的情況下會查詢上一級,直達查詢到變數名,則取消查詢
變數的賦值規則:當給變數賦值時,是在哪一個作用域裡面的變數賦值:
先在自己作用域查詢,如果有則賦值,如果沒有則上一級作用域裡面查詢,直達找到為止,如果全域性作用域都沒有的話,則定義為全域性變數,在賦值。
物件:複雜資料型別:
是一個物件空間可以儲存任意型別的資料,
語法“var obj={name:'jack" age:18}
操作物件:
1.點語法:
新增成員:obj.name='jack',向obj物件內,新增一個name成員名內容為jack
刪除物件成員:delete obj.name,刪除obj裡面的name成員
修改某一個物件成員:obj.age=20,重複賦值,如果物件內有這個成員則為修改,沒有則為新增
查詢物件:obj.name

2.陣列關聯語法:
	新增:obj['age']=20,

資料在記憶體中的儲存形式:
1.棧記憶體:基本資料型別
2.堆記憶體:複雜資料型別,只有地址在棧裡面
變數的賦值關係:
複雜資料型別,obj=obj1,兩個物件儲存的地址是一樣的,改變obj1的內容時,obj內的內容也會隨之改變.
資料型別之間的比較:
基本資料型別時值之間的比較,複雜資料型別比較的是地址之間的比較
陣列:是一個數據型別的集合,可以放任意型別的資料
陣列的定義方式:
1.字面量方式定義陣列:var arr=[],定義了一個空陣列
2.內建建構函式定義一個數組:var arr=new Array(),製造一個空陣列
定義一個有限長度陣列:var arr=new Arry(10),製造一個長度為十的空陣列
傳遞多個數據:var arr=new Arry(1,2,3,4),定義多個引數,則代表往陣列中添加了多個數據
陣列的基本使用:
陣列自帶屬性,length,代表陣列中有多少資料
獲取陣列中的基本資料:陣列名稱+[索引]
陣列的操作:
push()向陣列中新增資料,新增位置為最後;語法:陣列名.push(新增的資料);返回值:新增過後的資料長度
pop()刪除陣列中的最後一個數據,語法:陣列.pop()不需要引數;返回值:被刪除的那一個數據
unshift()像陣列中新增資料;語法:陣列.unshift(需要新增資料) ,位置新增在陣列的最前面,返回值,改變後陣列的長度,與push()記憶體的消耗不一樣
shift()刪除陣列中的第一個資料,語法:陣列.shift(),返回值,被刪除的那個資料
concat()對陣列進行拼接,理論上可以無限新增陣列,語法:陣列.concat([陣列]),返回值拼接後的陣列
splice()對陣列進行擷取,語法:陣列.splice(開始的索引位置,擷取多少個),直接改變原始陣列,不管擷取多少個內容都是以陣列返回,不傳遞第二個引數時,返回值為索引後所有值,新增陣列新成員,從第三個開始替換後謎案的元素
reverse()反轉陣列,語法:陣列.reverse(),返回值:反轉後的陣列
sort()陣列排序,1.語法:陣列.sort(),返回值排序好的陣列,排序方式是按照一位一位來排序
2.按照數字大小來排序:陣列.sort(function(a,b)){return a-b(b-a)}升序(降序)排列
join()把陣列連線成字串,語法:陣列.join('連線字元')
slice()擷取陣列,語法:陣列.slice(開始的索引,結束的索引),不改變原始陣列,包前不包後,以陣列的形式返回結果