programing

인수를 다른 Javascript 함수로 전달

goodcopy 2022. 12. 7. 00:11
반응형

인수를 다른 Javascript 함수로 전달

다음을 시도했지만 성공하지 못했습니다.

function a(args){
    b(arguments);
}

function b(args){
    // arguments are lost?
}

a(1,2,3);

함수 a에서는 arguments 키워드를 사용하여 인수 배열에 액세스할 수 있지만 함수 b에서는 이러한 인수는 손실됩니다.제가 시도하는 것처럼 다른 javascript 함수에 인수를 넘기는 방법이 있나요?

에 대한 동일한 액세스 권한을 가지기 위해 사용합니다.arguments기능하여b, 다음과 같이 합니다.

function a(){
    b.apply(null, arguments);
}
function b(){
    console.log(arguments); //arguments[0] = 1, etc
}
a(1,2,3);

여기서 테스트 할 수 있어요.

산포 연산자

확산 연산자를 사용하면 여러 인수(함수 호출용) 또는 여러 요소(배열 리터럴용)가 예상되는 장소에서 식을 확장할 수 있습니다.

ECMAScript ES6에는 보다 실용적인 방법으로 이를 수행할 수 있는 새로운 연산자가 추가되었습니다.확산 연산자.

를 사용하지 않는 예apply방법:

function a(...args){
  b(...args);
  b(6, ...args, 8) // You can even add more elements
}
function b(){
  console.log(arguments)
}

a(1, 2, 3)

Note 이 스니펫은 브라우저가 아직 ES5를 사용하는 경우 구문 오류를 반환합니다.

편집자 메모:스니펫에서는console.log()브라우저의 JS 콘솔을 열어 결과를 확인해야 합니다. 페이지 내 결과는 표시되지 않습니다.

다음과 같은 결과가 표시됩니다.

산포 연산자 인수 이미지 예제

즉, 어레이를 사용하는 경우 분산 연산자를 다른 용도로 사용할 수 있으므로 함수 인수에도 사용할 수 있습니다.공식 문서에서 설명하는 것과 유사한 예를 볼 수 있습니다.Rest parameters

다른 어떤 답변도 제공하지 않는다는 설명은 원래 인수가 여전히 사용 가능하지만 원래 위치에 있지 않다는 것입니다.arguments물건.

argumentsobject에는 함수에 제공된 실제 파라미터마다 하나의 요소가 포함되어 있습니다.전화할 때a3개의 인수를 지정합니다.숫자1,2,그리고.3.그렇게,arguments포함하다[1, 2, 3].

function a(args){
    console.log(arguments) // [1, 2, 3]
    b(arguments);
}

전화할 때b단, 1개의 인수를 전달합니다.aarguments물건.그렇게arguments포함하다[[1, 2, 3]](즉, 하나의 요소, 즉aarguments오브젝트: 원래 인수를 포함하는 속성을 가지고 있습니다.a).

function b(args){
    // arguments are lost?
    console.log(arguments) // [[1, 2, 3]]
}

a(1,2,3);

@Nick에서 설명한 바와 같이apply세트를 제공하다arguments오브젝트를 호출합니다.

다음과 같은 결과를 얻을 수 있습니다.

function a(args){
    b(arguments[0], arguments[1], arguments[2]); // three arguments
}

그렇지만apply일반적인 경우 올바른 해결책입니다.

특정 인수만 전달할 경우 다음과 같이 수행할 수 있습니다.

Foo.bar(TheClass, 'theMethod', 'arg1', 'arg2')

푸.js

bar (obj, method, ...args) {
  obj[method](...args)
}

obj그리고.method에 의해 사용됩니다.bar()나머지 arg는 실제 콜에 전달됩니다.

이거 참 잘 먹히네요.

function a(){
    b(...arguments);
}

function b(){
    for(var i=0;i<arguments.length;i++){
       //you can use arguments[i] here.
    }
}

a(1,2,3);

언급URL : https://stackoverflow.com/questions/3914557/passing-arguments-forward-to-another-javascript-function

반응형