foreach是ecma5中array新方法中最基本的乙個,就是遍歷,迴圈。例如下面這個例子:
[1, 2 ,3, 4].foreach(alert);
等同於下面這個for迴圈?1
234var
array = [1, 2, 3, 4];
for
(
var
k = 0, length = array.length; k < length; k++)
array在es5新增的方法中,引數都是function型別,預設有傳參,foreach方法中的function**支援3個引數,第1個是遍歷的陣列內容;第2個是對應的陣列索引,第3個是陣列本身。
因此,我們有:?1
23.foreach(
function
(value, index, array) );
對比jquery中的$.each方法:?1
23$.each(,
function
(index, value, array) );
會發現,第1個和第2個引數正好是相反的,大家要注意了,不要記錯了。後面類似的方法,例如$.map也是如此。?1
2345
67var
data=[1,3,4] ;
var
sum=0 ;
data.foreach(
function
(val,index,arr))
console.log(sum);
// ==> 8
map這裡的map不是「地圖」的意思,而是指「對映」。.map(); 基本用法跟foreach方法類似:
array.map(callback,[ thisobject]);callback的引數也類似:?1
23.map(
function
(value, index, array) );
map方法的作用不難理解,「對映」嘛,也就是原陣列被「對映」成對應新陣列。下面這個例子是數值項求平方:?1
2345
67var
data=[1,3,4]
var
squares=data.map(
function
(val,index,arr))
console.log(squares);
// ==> [1, 9, 16]
注意:由於foreach、map都是ecma5新增陣列的方法,所以ie9以下的瀏覽器還不支援(萬惡的ie啊),不過呢,可以從array原型擴充套件可以實現以上全部功能,例如foreach方法:?1
2345
if
(
typeof
array.prototype.foreach !=
"function"
) ;
}
**自別人的
關於js中的then
then 相關的東西包括但不限於 promise,thien.js 雖然還沒徹底搞清楚這些個玩意兒,但是 現在知道了 then 是幹嘛的了 最主要的,是解決了非同步方法立刻返回的問題 這個特性帶來的後遺症 假設 我要等非同步處理完了,再去執行一段 後續 怎麼做?定義乙個全域性flag,非同步處理完成...
關於 js 中 this 的理解
今天在寫乙個tab選項卡切換時遇到乙個 this 的引用問題,做個記錄加深一下理解。定時器 var timer null var lis document.getelementsbytagname li for var i 0 i 給每個li元素新增自定義屬性id,值為當前li元素在lis中的索引 ...
關於js中的沙箱
我的目標,非常簡單,就是希望能夠在我自己的系統中使用別人寫的 但是這些 可能會汙染全域性變數,甚至可能是惡意的,破壞性的。我要保證這些 被正確執行,並且其影響範圍完全受到控制,這就是我想要的沙箱。根據我自己的思考以及和一些朋友的討論,我認為我主要需要解決四點 1.變數訪問問題 第三方可以使用變數名訪...