2014-04-23 16 views

Trả lời

48

Sự khác biệt nằm ở chỗ nếu bộ sưu tập hơn mà bạn đang lặp lại là một đối tượng trong đó có một tài sản length thì _.forEach() sẽ lặp trên nó như thể nó là một mảng, trong khi _.forOwn() sẽ lặp trên nó như một đối tượng .

Giả sử bạn có các đối tượng:

a = { 
    x: 100, 
    y: 200, 
    length: 2 
} 

Nếu bạn lặp qua nó như:

_.forEach(a, function(val, key) { 
    console.log('a[' + key + '] = ' + val); 
}); 

bạn sẽ nhận được kết quả:

a[0] = undefined 
a[1] = undefined 

trong khi iterating trên nó với _.forOwn() bạn sẽ nhận được hợp lý hơn:

a[x] = 100 
a[y] = 200 
a[length] = 2 
Các vấn đề liên quan