new Function
재사용 할 수있는 함수를 만듭니다. eval
주어진 문자열을 실행하고 마지막 문의 결과를 반환합니다. 평가를 에뮬레이트하기 위해 Function을 사용하는 래퍼 함수를 만들려고 시도했을 때 질문이 잘못되었습니다.
그들이 커튼 뒤에서 몇 가지 코드를 공유한다는 것이 사실입니까? 예, 가능성이 높습니다. 정확히 같은 코드? 아니, 확실히.
재미를 위해 eval을 사용하여 함수를 만드는 내 자신의 불완전한 구현이 있습니다. 그것이 차이에 대해 약간의 빛을 비추 길 바랍니다!
function makeFunction() {
var params = [];
for (var i = 0; i < arguments.length - 1; i++) {
params.push(arguments[i]);
}
var code = arguments[arguments.length - 1];
return eval('[function (' + params.join(',')+ '){' + code + '}][0]');
}
이 함수와 새 함수의 가장 큰 차이점은 함수가 어휘 적으로 범위가 지정되지 않는다는 것입니다. 그래서 그것은 클로저 변수에 접근 할 수없고 내 것입니다.