"신품"이 필요하지 않습니다. "new"는 인스턴스를 반환합니다. 귀하의 질문에 지금
function foo(a){
return a;
}
foo(4); // this will return 4, but
new foo(); // this will return a 'foo' object
을하지만 :
는 예를 들어 (말장난 의도). 제거한 것처럼 B는 함수 A의 범위 내에서 선언됩니다. 따라서 B는 호출 한 범위에 존재하지 않으므로
new outer(B(9));
이 오류를 발생시킵니다.
두 번째로, 멘토가 말한 것. 각 함수는 함수를 반환하기 때문에 반환 된 함수를 호출합니다.
A(2)(3)(4);
// each recursive '(x)' is attempting to call the value in front of it as if it was a function (and in this case they are).
일종의 설명하기 :
function A (x) {
return function B (y) {
return function C (z) {
return x+y+z;
}
}
};
var f = A(2); // f is now function B, with x = 2
var g = f(3); // g is now function C, with x = 2, and y = 3
var h = g(4); // Function C returns x+y+z, so h = 2 + 3 + 4 = 9
그러나, 우리는 다음과 같은 '바로 가기'를 사용할 수 있습니다
A(2)(3)(4) = (A(2)(3))(4) = ((A(2))(3))(4);
// A(2) returns a function that we assigned to f, so
((A(2))(3))(4) = ((f)(3))(4) = (f(3))(4);
// We also know that f(3) returns a function that we assigned to g, so
(f(3))(4) = g(4);
을 내가 도움이되기를 바랍니다!
코드가 정상적으로 작동합니다. 달성하고자하는 것은 무엇입니까? 네가 묻고있는 것이 불분명하다. –
"new (새)"는 여기에 필요 없습니다. 당신은'A (2) (3) (4)'또는'var f = A (2); var g = f (3); 경고 (g (4));', 꽤 많이 똑같습니다. – yent
yent.. 큰 대답을 고맙습니다. 대답 해주세요. 제프 ... 아니, 일하지 않았어, 그걸 시도 했니? "B in undefined". rid .... 그것의 반환 x + y + z. 개념의 증명. – mike628