> 웹 프론트엔드 > JS 튜토리얼 > Javascript_javascript 기술의 메서드 및 익명 메서드 인스턴스에 대한 자세한 설명

Javascript_javascript 기술의 메서드 및 익명 메서드 인스턴스에 대한 자세한 설명

WBOY
풀어 주다: 2016-05-16 15:55:07
원래의
1160명이 탐색했습니다.

이 기사의 예에서는 Javascript의 메소드와 익명 메소드를 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.

자바스크립트 메소드(함수)

선언 기능

함수로 시작하고 함수 이름이 이어집니다. C# 및 Java와 달리 Javascript는 반환 값 유형과 매개변수 유형을 선언할 필요가 없습니다. 반환 값이 정의되지 않았습니다.

예를 보면 더 명확해집니다.
매개변수도 없고 반환값도 없는 메소드:

function f1(){
alert('这是一个方法');
}
f1();//调用方法 

로그인 후 복사

매개변수와 반환 값이 없는 메서드:

function f2(){
return 100;
}
var result=f2();//声明一个变量,接收f1()中的返回值
alert(result);//100 

로그인 후 복사

매개변수 및 반환 값이 있는 메서드:

function f3(n1,n2){
return n1+n2;
}
var result=f3(20,30);
alert(result);//50

로그인 후 복사

참고 1:

먼저 예를 살펴보세요.

function f1(){
  alert('这是一个方法'); 
}
alert(f1());//弹出”这是一个方法”后,还会显示undefined

로그인 후 복사

이유: js에서는 변수에 값이 할당되지 않으면 정의되지 않습니다. 이 경우 f1()에는 반환 값이 없으므로 여기에 알 수 없는 변수가 들어갑니다. 경고(), 물론 팝업은 정의되지 않습니다.

참고 2:

alert(f1);//不写括号,会将f1整个代码以字符串形式显示出来:
function f1(){ 
alert('这是一个方法'); 
} 
로그인 후 복사

자바스크립트에는 메소드 오버로딩이 없습니다

최신에 정의된 메소드만 호출:

function f1(n1,n2){ 
alert(n1+n2); 
} 
function f1(n1,n2){ 
alert(n1-n2); 
} 
f1(10,2);//8

로그인 후 복사

결론: 어디서 호출하든 가장 최근에 정의된 메소드만 호출됩니다.

참고: 정의되지 않은 숫자=정의되지 않음

function f1(n1,n2,n3){ 
alert(n1-n2+n3); 
} 
f1(10,2);
//NaN,因为没有给n3传值,n3就是undefined,
//数字加上undefined还是undefined

로그인 후 복사

위 결론: 자바스크립트에는 메소드 오버로딩이 없습니다

메소드 정의 시 참고 사항:

내장 메소드와 동일한 사용자 정의 함수 이름을 사용하지 마십시오.
JS 또는 DOM에 내장된 메소드와 동일한 이름을 사용하지 마십시오. 예를 들어 selectAll 및 focus와 같은 함수 이름을 사용하지 마십시오.

시스템 기능과 동일한 이름을 사용하지 마세요. (클릭 이벤트에서 직접 정의한 포커스 메서드를 호출하면 문제가 있습니다. 시스템의 focus() 메서드와 이름이 같습니다.)

규칙 대괄호 작성 시 참고 사항:

일반적으로 js에서 중괄호를 작성할 때 바로 뒤에

가 옵니다.
function f1(){ 
return 
{ 
age:100}; 
} 
var s=f1(); 
alert(s.age);
//undefined。s结果是undefined,undefined.age必然还是undefined

로그인 후 복사

익명 방식(많이 사용)

익명 방식을 권장하는 이유는 무엇인가요?

1. 1.js에는 aa(){alert{'나는 꽤 잘생겼어요'}} 메소드 함수가 있습니다

2. 2.js에는 aa(){alert{'점점 멋져지고 있어요'}} 메소드 함수가 있습니다

3. 1.js와 2.js를 index.html로 순차적으로 가져오고 aa()를 호출하면 다음과 같습니다. 점점 더 멋있어지고 있습니다.

결론: 2.js의 aa() 메서드는 1.js의 aa()를 재정의합니다

어떻게 해야 할까요? 더 이상 메소드 이름을 지정하지 않고 익명 메소드를 사용하세요

먼저 변수에 익명 메서드를 할당하는 예를 살펴보겠습니다.

var ff=function(n1,n2){ 
return n1+n2; 
}; 
alert(ff(20,30));//50

로그인 후 복사

무명 메서드를 한 줄로 작성하세요.

코드 복사 코드는 다음과 같습니다.
(function (n1,n2){alert(n1 n2);} )(9 ,9);

소형 케이스: 1:

var x=1; 
var y=0; 
var z=0; 
var add=function (n){n=n+1;return n}; 
y=add(x);//结果是2,先调用上面add 
add=function(n){n=n+3;return n;}; 
z=add(x);//结果是4,调用上面临近的这个add 
alert(y+','+z);//2,4

로그인 후 복사

소형 사례 2:

function aa() 
{ 
  alert("aaa"); 
  return function(){alert("bbb");}; 
} 
alert(aa);//不写括号,会将aa方法的整个代码显示出来 
alert(aa());//aaa,function(){alert("bbb");}; aaa就不解释了,后面那一串是作为aa()的返回值显示 
alert(aa()());//aaa,bbb,undefined 
//下面分解上面这句进行解释 
var s=aa();//aaa 
alert(s());//s()就是function(){alert("bbb");};首先弹出bbb,其次该方法没有返回值,故弹出undefined

로그인 후 복사

이 기사가 모든 사람의 JavaScript 프로그래밍 설계에 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿