1,eval()只有一個參數。如果傳入的參數不是字符串,則直接返回這個參數。如果參數是字符串,它會把參數當作js代碼進行編譯。
2,delete用來刪除對象屬性或數組元素,只刪除了元素,並沒有修改數組長度。
var a=[2,5,8];
delete a[2];//刪除最後一個元素。
2 in a;//false,元素已被刪除。
a.length;//3,只刪除了元素,並沒有修改數組長度。
3,for/in,遍歷一個對象的屬性。
//將屬性的名字賦值給變量p,然後輸出每一個屬性的值。
for(p in o) console.log(o[p]);
4,檢查屬性,var o={x:1}。
"x" in o;//true。
"y" in o;//false。
"toString" in o;//true,o繼承toString屬性。
o.hasOwnProperty("x");//true。
o.hasOwnProperty("toString");//false。
5,ECMAScript5(es5),定義了兩個獲取對象屬性的方法。
//返回一個數組,這個數組由對象中可枚舉的自有屬性組成。
Object.keys();
//返回對象所有自有屬性的名稱。
Object.getOwnPropertyNames();
6,es5提供內置函數,
JSON.stringify();//將對象轉爲JSON字符串,
JSON.parse();//將JSON字符串轉對象。
7,數組創建,
var empty =[];
或
var empty = new Array();
或
var empty = new Array(10);//指定初始長度。
8,數組是對象的特殊形式,
var a=[1,2,3,4];
//js內部會把數字索引先轉"1",然後將其作爲屬性名使用。
//當試圖查詢不存在的值時,不會報錯,只會返回undefined。
a[1]=2;
9,數組分爲稠密數組和稀疏數組。
a = [];
添加數組 a.push("a","b","c");
delete a[1];從數組中刪除一個元素 ,
a.pop()使數組的長度減一,並返回被刪除的元素值,
push和pop都修改了原數組。
shift()從數組頭部刪除一個元素,並返回被刪除的元素,
shift刪除元素會使數組元素下移。
unshift()在數組頭部添加元素。
join()把數組轉換爲字符串並連接起來,
a.join("_"); //"a_b_c"
reverse()將數組元素顛倒,修改了原數組。
sort()給數組排序,無參以字母表順序排列,也可以傳入一個函數作爲比較器。
concat()創建並返回一個新數組,原數組不改變,
a.concat(1,2);//["a","b","c",1,2]
a.concat([1,2]);//["a","b","c",1,2]
10,slice();
返回指定數組的一個片段,不修改原數組,它的兩個參數分別指定了參數的開始和結束的位置,包含第一個參數不包含第二個,第二個參數省略表明從指定位置到結束。
11,splice();
在數組中插入或刪除元素,修改了原數組。第一個參數指定插入或刪除的位置,第二個參數指定刪除元素的個數(省略:從指定刪除位置到結束都被刪除),緊隨其後的任意元素都是要插入的元素。
var a=[1,2,3,4,5,6];
a.splice(3,3);//返回[4,5,6],a是[1,2,3]
12,大部分的數組方法第一個參數接收一個函數,並且對數組的每個元素調用一次函數。如果是稀疏數組,對不存在的元素不調用函數。在大多數情況下,調用函數提供三個參數:數組元素,數組索引,數組本身(後兩個可以省略)。數組方法如果有第二個參數,則調用的函數被看做第二個參數的方法,數組方法都不會修改調用的原始數組,但是調用的函數可以修改。
13,forEach()使用三個參數調用函數:數組元素,元素索引,數組本身。
14,map方法返回一個數組,它由函數的返回值組成。
a=[1,2,3];
b=a.map(functin(x){
return x*2;
});
15,filter()方法返回一個數組。根據返回值是true和false判斷數組元素是否添加到返回的數組中。filter會跳過稀疏數組中缺少的元素。
16,every()和some()是數組的邏輯判斷,返回true和false。every是針對數組中所有元素,some是數組中至少有一個滿足
a.every(function(x){return x>0});//true
17,reduce和reduceRight使用指定的函數將數組元素進行組合,生成單個值。reduce需要兩個參數,第一個是執行化簡操作的函數,並返回化簡後的值。第二個(可選)用於傳遞給函數的初始值。reduce使用的函數:數組元素,元素索引,數組本身將作爲2到4個參數傳遞給函數。第一個參數是函數到目前爲止化簡操作累積的結果,第一次調用函數時第一個參數就是reduce方法的第二個參數,如果reduce方法第二個參數沒有,函數將用數組的第一個元素進行初始化。
a.reduce(function(x,y){
return x+y
},0);
a.reduce(function(x,y){
return x+y
});
18,indexOf()和lastIndexOf()返回找到元素的第一個索引,如果沒有找到返回–1。第一個參數是需要搜索的值,第二個參數(可選)指定搜索的起始索引。
19,數組類型,
Array.isArray([]);//true
Array.isArray({});//false
20,字符串數組,字符串的行爲類似於只讀的數組,除了用charAt()訪問單個字符,還可以使用[],typeof仍然返回"string",Array.isArray()傳遞字符串返回false。通用的數組方法可以應用到字符串上。
Array.prototype.filter.call(s,function(x){
return x=="s"
}).join(",");