0
我正在查看一個underscore.js函數來檢索對象中的值,並且很想了解_.values函數以何種方式創建的原因。在這裏做的折衷是什麼? (push vs. Array)
如在underscore.js功能:
_.values = function(obj) {
var keys = _.keys(obj);
var length = keys.length;
var values = Array(length);
for (var i = 0; i < length; i++) {
values[i] = obj[keys[i]];
}
return values;
};
我相信這也將工作不過:
_.values = function(obj) {
var keys = _.keys(obj);
var length = keys.length;
var values = [];
for (var i = 0; i < length; i++) {
values.push(obj[keys[i]]);
}
return values;
};
什麼是使用功能#1對#2之間的權衡。僅僅是爲了表現還是還有其他的東西?
謝謝。
直覺從類似C語言的數組經常在JS中崩潰。你能否更詳細地解釋爲什麼這在這裏直觀地工作? – djechlin 2014-09-28 01:51:48
@djechlin:因爲現代JS運行時非常聰明,並且會嘗試變得更像C。 (準確的答案是數組實現像Java ArrayList,而不是散列表,在適當的情況下) – SLaks 2014-09-28 01:52:47
有道理@SLaks - 謝謝! – sidewalksalsa 2014-09-28 02:06:35