이 기사의 예에서는 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
무명 메서드를 한 줄로 작성하세요.
소형 케이스: 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 프로그래밍 설계에 도움이 되기를 바랍니다.