이전에 답변 된 질문에 따르면 이것이 가장 빠른 방법이라고합니다.
//nl is a NodeList
var arr = Array.prototype.slice.call(nl);
내 브라우저에서 벤치마킹 할 때 이보다 3 배 이상 느립니다.
var arr = [];
for(var i = 0, n; n = nl[i]; ++i) arr.push(n);
둘 다 동일한 출력을 생성하지만 특히 사람들이 다르게 말했기 때문에 두 번째 버전이 가장 빠른 방법이라고 믿기가 어렵습니다.
내 브라우저 (Chromium 6)의 기발한가요? 아니면 더 빠른 방법이 있습니까?
편집 : 관심있는 사람은 다음을 결정했습니다 (테스트 한 모든 브라우저에서 가장 빠른 것 같습니다).
//nl is a NodeList
var l = []; // Will hold the array of Node's
for(var i = 0, ll = nl.length; i != ll; l.push(nl[i++]));
EDIT2 : 더 빠른 방법을 찾았습니다
// nl is the nodelist
var arr = [];
for(var i = nl.length; i--; arr.unshift(nl[i]));
var i = nl.length, arr = new Array(i); for(; i--; arr[i] = nl[i]);
arr[arr.length] = nl[i];
arr.push(nl[i]);
함수 호출을 피하기 때문에 보다 빠를 수 있습니다 .