인수를 다른 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개의 인수를 전달합니다.a의arguments물건.그렇게arguments포함하다[[1, 2, 3]](즉, 하나의 요소, 즉a의arguments오브젝트: 원래 인수를 포함하는 속성을 가지고 있습니다.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
'programing' 카테고리의 다른 글
| MySQL과 Maria의 JSON_SEARCH 차이DB (0) | 2022.12.07 |
|---|---|
| php 랜덤x 자리수 (0) | 2022.12.07 |
| 치명적인 오류: 클래스 'SoapClient'를 찾을 수 없습니다. (0) | 2022.12.07 |
| 이전 쿼리 결과에 따라 테이블을 업데이트하는 중 (0) | 2022.12.07 |
| Python에서 파일 크기를 가져오고 있습니까? (0) | 2022.11.27 |
