[자바스크립트_함수]
명명함수 | 익명함수 |
function 함수명 (매개변수) { } | let 변수 = function (매개변수) { } |
>> 함수명() | >> 함수명() |
※ 순서 무관, 자바와 다르게 호출 후 함수 선언 가능 (자바스크립트는 당연히 밑에 있다고 생각하는 스타일) |
※ 위에서 아래로 실행 순서, 따라서 함수 선언 후 호출 진행 |
※ 자바스크립트는 동적 언어임에 따라 매개변수를 별도로 지정하지 않음
※ 매개변수로 모든 타입을 받을 수 있음
※ 선택자.addEventListener("이벤트명", 익명함수) : 익명함수의 매개변수를 e로 선언시 이벤트 정보 접근 가능
<script>
//명명함수
//프로그래밍 하는 학생을 기능화
//자바 스크립트는 매개변수 let 선언하지 않아도 됨
//명명 함수는 순서를 바꿔도 된다.
//매개변수가 없을 경우
function programming() {
console.log("프로그래밍 하는 학생입니다.");
}
programming();
//프로그래밍 하는 학생 한명씩 증가함
//매개변수가 있을 경우 + 반환할 경우
function program(student) {
console.log("반에 학생은 " + student + "명 있습니다.")
}
program(15);
program(16);
let f = function () {
console.log("익명함수");
if (true) {
return; // 함수를 빠져나가는 기능 (if-break처럼)
}
}
f();
//callback 함수 형태
//callback : 다른 함수가 실행을 끝낸 뒤 실행
</script>
콜백함수(callback function) |
파라미터(매개변수)로 함수를 전달받아, 함수의 내부에서 실행하는 함수 |
익명의 함수를 사용 (함수 내부에서 실행되기 때문에 이름이 없어도 무방) |
∴ 함수 자체를 전달한다고 이해할 것 |
(콜백 함수 예시)
function food(sth, callback) {
//즉 파라미터 callback은 menu()를 의미
// food 함수는 콜백 함수를 인수로 받아서 실행함
//특이하게 파라미터 값은 함수 이름만 전달한다!! (함수 참조 전달)
console.log("preparing " + sth);
callback(sth);
}
function menu(sth) { //callback fimction
console.log("오늘의 메뉴는 " + sth + " 입니다.")
}
※ 특이하게 파라미터 값은 함수 이름만 전달
(∴ 함수 참조 전달)
[자바와 자바 스크립트 차이점]
자바(정적) | 자바스크립트(동적) |
- 명명함수라도 순서를 바꿔서는 안됨 | - 명명함수는 순서를 바꿔도 됨 |
- 지역변수, 매개변수 모두 타입/변수를 선언해야 함 | - 매개변수 변수 선언 let 생략 가능 |
- 매서드에 매개변수를 받을 수 있도록 선언하면 그 타입에 맞는 매개변수를 호출해야 함 |
- 매서드에 매개변수를 받을 수 있도록 선언하고, 매개변수를 호출하지 않아도 가능 |
자바스크립트 매개변수 let 생략 가능 이유 |
매개변수 param은 자동으로 함수 범위 내에서 선언됨 |
(참고 예제)
function program(student) {
console.log("반에 학생은 " + student + "명 있습니다.")
}
program(15);
program(16);
function myFunction() {
let hi = "hello"; // 지역 변수
console.log(hi); // "hello"
}
myFunction();
// console.log(hi); // hi is not defined (오류 발생: hi는 함수 외부에서 접근 불가)
function myFunction() {
hi = "hello"; // 암묵적 **전역 변수**
console.log(hi); // "hello"
}
myFunction();
console.log(hi); // "hello" (암묵적 전역 변수로 함수 외부에서도 접근 가능)
ⓛ 순서_ 자바 코드 예시
public static void hello() {
System.out.println("안녕하세요");
}
hello();
① 순서_자바스크립트 코드 예시
hello();
function hello() {
console.log("안녕하세요");
}
----
② 지역변수, 매개변수 타입/변수 선언_자바 코드 예시
public static void hello(String language) {
System.out.println(language + "의 인사말입니다.");
}
hello("korea");
hello("africa");
hello("usa");
② 지역변수, 매개변수 'let' 생략_자바 스크립트 코드 예시
hello("korea");
hello("africa");
hello("usa");
function hello(language) {
console.log(language + "의 언어입니다.");
}
728x90
'용어 > Differences by language' 카테고리의 다른 글
[Python/JAVA/JS] 다차원 배열, 중첩 배열/리스트 (0) | 2024.06.26 |
---|---|
[Python/JAVA/JS] 자바/자바스크립트의 배열과 파이썬의 리스트, 문자열 관계 이해하기 (0) | 2024.06.26 |
[Python/JAVA] 문자열 비교 (0) | 2024.06.25 |
[Python/Java/Js] 연산자 비교 (0) | 2024.06.25 |
[국비][JAVA/JS] 자바와 자바스크립트의 차이 (0) | 2024.05.27 |