[英]Understanding Array.prototype.map
我正在經歷Javascript映射函數,並停留在循環語法上。 很難找出逗號后的o 。 誰能幫我解決這個問題。 另外,循環的終止條件是什么?
Array.prototype.mymap = function (callback) {
var obj = Object(this);
if (obj.length === 0) return null;
if (typeof(callback) === 'undefined') return null;
for (var i = 0, o; o = obj[i]; i++) {
obj[i] = callback(o);
}
return obj;
};
for (var i = 0, o; o = obj[i]; i++) {
obj[i] = callback(o);
}
這與以下內容相同:
var i = 0,
o;
while (o = obj[i]) {
...
i++;
}
這意味着它將聲明變量o
,該變量最初設置為undefined
。 在每次循環迭代期間, obj[i]
被分配給o
。 當obj[i]
導致undefined
(因為i
超出數組的長度)時,表達式o = obj[i]
導致undefined
,從而終止了循環。
實際上,此循環實現有一個bug:只要任何數組值為falsey ,它就會終止; 這可能是不希望的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.