Array.forEach
함수를 사용해야하는 최신 웹 응용 프로그램에서 작업 할 때 나는 내장 된 함수가없는 구형 브라우저에 계속해서 다음 코드를 추가했습니다.Array.prototype.forEach 대체 구현 매개 변수
/**
* Copyright (c) Mozilla Foundation http://www.mozilla.org/
* This code is available under the terms of the MIT License
*/
if (!Array.prototype.forEach) {
Array.prototype.forEach = function(fun /*, thisp*/) {
var len = this.length >>> 0;
if (typeof fun != "function") {
throw new TypeError();
}
var thisp = arguments[1];
for (var i = 0; i < len; i++) {
if (i in this) {
fun.call(thisp, this[i], i, this);
}
}
};
}
나는 완전히 어떻게 작동하는지 코드가 수행하고 이해,하지만 난 항상 주석과 대신 arguments[1]
을 사용하여 로컬 변수로 설정 한 공식 thisp
매개 변수를 사용하여 복사를 참조하십시오.
내가 왜 알 수 있듯이이 코드가 thisp
으로 변수가 아닌 공식 매개 변수로 사용되었으므로이 변경이 이루어진 이유를 아는 사람이 있는지 궁금합니다.
흠. 왜 길이가 1인지 궁금해. 두 번째 매개 변수가 선택 사항이기 때문에 그럴 것 같니? (나는 함수의 길이가 인자의 수라는 것을 결코 알지 못했다.) – Joshua
@ Joshua : 아마도, 스펙이 말하는 것은 무엇이든지, 명확한 이유가 없다하더라도 그것이 정의되는 방법이다. :) – pimvdb