>웹 프론트엔드 >JS 튜토리얼 >자바스크립트 기능 소개_기본지식

자바스크립트 기능 소개_기본지식

WBOY
WBOY원래의
2016-05-16 18:46:54975검색

1. 함수 정의 및 호출
자바스크립트에서 함수를 정의하는 가장 일반적인 방법은 함수 문을 호출하는 것입니다. 명령문은 다음과 같은 함수 키워드로 구성됩니다.
Ø 함수 이름
Ø 괄호 안의 매개변수 목록 매개변수는 선택사항이며 쉼표로 구분됩니다.
Ø 함수 본문은 중괄호 함수 사용 시 주의할 점:
Ø 함수 본문에 return 문이 있으면 값을 반환하고, 없으면 정의되지 않은 값을 반환합니다.
Ø JavaScript는 함수 매개변수의 개수를 확인하지 않습니다. 형식 매개변수보다 실제 매개변수가 더 많이 전달되면 초과된 실제 매개변수는 무시되지 않습니다. 전달된 매개변수 수보다 적으면 이 경우 일반적으로 오류가 발생합니다. 프로그램 실행시 발생합니다


실행 중 결과:
ddxkj
정의되지 않음
aaa

ccc
aaa

ccc
aaa

정의되지 않음
1.1.
JavaScript 1.2 및 ECMAScript v3에서는 함수 정의가 함수 중첩인 다른 함수 내에 나타날 수 있습니다. ECMAScript v3에서는 함수 정의가 임의로 나타나는 것을 허용하지 않습니다. 이는 여전히 최상위 전역 코드와 최상위 함수 코드로 제한됩니다. 즉, 함수 정의는 루프 및 조건문에 나타날 수 없습니다. 예:

[Ctrl A 모두 선택 참고: 외부 J를 도입해야 하는 경우 실행하려면 새로 고쳐야 합니다.
]

실행 중 결과:
10000
1.2.Function() 생성자
ECMAScript v1 및 JavaScript 1.1에서는 Function() 및 new를 사용하여 함수를 동적으로 정의할 수 있습니다. 예: var f = new Function("x", "y", "return x*y;")
이 코드 줄은 다음과 거의 같습니다: function f(x,y){return x*y ;}
Function() 생성자는 임의 개수의 문자열 매개변수를 허용할 수 있습니다. 마지막 매개변수는 JavsScrpt 문을 포함할 수 있는 함수 본문입니다. 함수에 매개변수가 없으면 함수 본문의 문자열만으로도 충분합니다.
Function() 생성자는 함수 이름이 정의되지 않아 익명 함수라고도 합니다.
Function() 생성자 사용:
Ø 함수를 동적으로 생성하고 컴파일합니다. 함수가 호출될 때마다 Function() 생성자가 함수를 컴파일해야 하는데 이것이 단점이 됩니다. 따라서 Function() 생성자는 일반적으로 루프나 자주 호출되는 함수에서 사용되지 않습니다.
Ø 명령문 대신 JavaScript 표현식으로 함수를 정의하세요. 하지만 자바스크립트에서는 문장 대신 표현식으로 함수를 정의하고 싶다면 함수 리터럴을 사용하는 것이 더 편리하다.
1.3.함수 리터럴
함수 리터럴의 구문은 명령문이 아닌 표현식으로 사용된다는 점과 함수 이름을 지정할 필요가 없다는 점을 제외하면 함수 명령문과 매우 유사합니다. function 문 및 Function() 생성자와 마찬가지로 함수 리터럴도 함수를 생성하는 방법 중 하나입니다. 예:
Ø function f(x){return x*x;} //함수 명령문
Ø var f = new Funtion("x","return x*x;") //Function( ) 생성자
Ø var f = function(x){return x*x;}
함수 리터럴은 이름 없는 함수를 생성하지만 호출을 작성할 때 함수 이름을 지정할 수도 있습니다.
그 자체 재귀 함수는 매우 유용합니다. 예:
var f = functionfact(x) { if (x <= 1) return 1; else return x*fact(x-1) }; 위 코드는 이름이 지정되지 않은 함수를 정의합니다. f에 참조를 저장합니다. 이는 사실() 함수를 생성하지 않으며 단지 함수 본문이 자신을 호출하지 않고 이 이름을 사용할 수 있도록 허용합니다.
함수 리터럴은 할당되거나, 함수에 전달되거나, 심지어 변수처럼 직접 호출될 수도 있습니다. 예:

[Ctrl A 모두 선택 참고: 외부 J를 도입해야 하는 경우 실행하려면 새로 고쳐야 합니다
]<script> //print1返回一个值 function print1(){ return 'ddxkj'; } //print1没有return语句,返回undefined function print2(){ } function print3(str1,str2,str3){ document.write(str1,"<br>"); document.write(str2,"<br>"); document.write(str3,"<br>"); } document.write(print1(),"<br>"); document.write(print2(),"<br>"); print3('aaa','bbb','ccc'); //实参和形参个数相同 print3('aaa','bbb','ccc','ddd','eee'); //实参个数多于形参 print3('aaa','bbb'); //实参个数小于形参 </script>
运行结果:
100
25
2. 作为数据的函数
当函数被做为一种数据时,就可以像变量,被赋值、存储在对象属性或数组、传递给函数。
当以如下方式定义一个函数时,function square(x){return x*x;},定义了一个函数对象,并把这个函数对象赋值给了square。在这里square没有任何意义,不过只是一个对象而已,存储了函数对象。可以将这个函数赋值给其它变量。例如:

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

运行结果:
16
100

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

运行结果:
25
hello world
100
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.