> 웹 프론트엔드 > JS 튜토리얼 > Javascript 함수_javascript 기술의 매개변수 사용 분석

Javascript 함수_javascript 기술의 매개변수 사용 분석

WBOY
풀어 주다: 2016-05-16 18:31:31
원래의
801명이 탐색했습니다.

우선, 함수는 JS에서도 식별자입니다. 새로운 변수에 할당되거나 이 변수를 통해 호출될 수 있습니다. 이는 C 언어의 함수 포인터와 약간 비슷하지만 다음 코드와 같이 완전히 동일하지는 않습니다.

코드 복사 코드는 다음과 같습니다.

function myfun() {
alert("funcation call")
}
var fun = myfun
fun( );

언급할 가치가 있는 또 다른 점은 JS의 함수 매개변수가 반드시 엄격하게 일치할 필요는 없다는 것입니다. 예를 들어 fun(aa,bb) 함수가 있는 경우 이 함수를 호출할 때 두 개의 매개변수가 그에게 전달되어야 합니다. 하지만 JS에서는 1, 3 등 원하는 수의 매개변수를 그에게 전달할 수 있습니다. 모두 괜찮습니다. JS에서 전달되는 매개변수는 함수가 호출될 때마다 지정된 매개변수를 기반으로 하지 않습니다. 이 배열에는 함수가 호출될 때 전달되는 모든 매개변수가 저장됩니다. 다음 코드와 같이 함수를 선언할 때 형식 매개변수를 지정할 수도 있습니다.
코드 복사 코드는 다음과 같습니다.

function args() {
if (arguments[0] != 정의되지 않음) {
alert(arguments[0])
}
}
args ( ); //아무것도 출력하지 않음
args("hehe"); //매개변수 값 팝업 ​​

위에 표시된 것처럼 인수 배열의 각 첨자는 0부터 시작하며 다음과 같습니다. 전달된 각 매개변수에 대해 지정된 위치에 매개변수가 없으면 정의되지 않습니다.
args.length를 사용하여 전달된 매개변수 수를 확인할 수 있습니다. 이 방법은 때때로 매우 유용합니다. we 이 기능을 사용하여 C 언어의 printf 기능을 시뮬레이션할 수 있습니다:
코드 복사 코드는 다음과 같습니다.

function format() {
if (arguments.length == 0) {
return "";
}
var formatter = 인수[0]
for (var i = 1; i < 인수.길이; i ) {
formatter = formatter.replace(new RegExp("\{" (i-1) "\}","gm"), 인수[i ]);
}
return formatter;
}
alert(format("안녕하세요 {0}, 이것은 {1}의 기능입니다!","world","javascript")) ;

위 코드는 단순히 형식화된 출력의 기본 기능을 구현한 것입니다. 물론 관심이 있다면 마지막 인수에 대해 더 자세히 설명하겠습니다. , 조정될 수 있는 현재 함수를 나타냅니다. 이 속성 값은 일부 경우에 여전히 유용합니다. 다음 코드를 고려하세요.
코드 복사 코드는 다음과 같습니다.

function sum(num ) {
if (num == 1) {
return num;
} else {
return num sum(num - 1)
}
}
var mysum = sum;
alert(mysum(5)); //출력 15
sum = function() { return 1;
alert(mysum(5));
재귀적 합산 함수입니다. Mysum은 처음에 sum과 동일한 함수입니다. 프로그램 실행 중에 sum 함수 본체를 변경하면 함수를 호출한 결과가 달라집니다. 이런 문제는 없을 겁니다~

코드 복사 코드는 다음과 같습니다.
function sum( num) {
if (num == 1) {
return num;
} else {
return num 인수.callee(num - 1)
}
}
var mysum = sum;
alert(mysum(5)); //출력 15
sum = function() { return 1 }; /output 15


위와 같이 외부 참조가 어떻게 변경되더라도 호출 수신자는 현재 호출된 함수를 가리키게 됩니다. JS에서 재귀를 작성할 때 여전히 이에 주의할 필요가 있습니다. 일반적으로 그렇지 않습니다
이런 오류가 발생하는데, 발생하면 원인을 찾기가 쉽지 않고 많은 시간이 낭비됩니다.
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿