function 함수
<script>
// function : 함수 - 자바의 메서드와 같은 개념
// hoisting : 함수의 선언은 코드상 어디에 작성해도, 모든 스크립트 코드의 '최상위'에 선언된 것으로 처리 됨.
// 매개변수의 자료형이 없다> 명시적 자료형이 없다.
function plus(num1,num2) { // 보통은 함수를 상단에다 만드는 것이 일반적
return num1+num2;
}
let result = plus(10,5); // 15 리턴해서 변수 result 에 저장
console.log(result);
</script>
> First Class Function : 일등급 함수라는 뜻
* 함수의 이름에 의미가 부여된다.
cpu는 ram에 기억된 내용만 처리할 수 있음
- 4개의 영역에서 관리된다.
- 우리가 작성한 소스 코드를 이진수로 바꾸는 작업 > 컴파일
- cpu에 의해 실행이 되어야 함(저장이 되어 있어야 함)
- 컴파일된 소스 코드는 text 영역으로 들어가서 저장됨
- Stack 영역 : 변수를 만들면 변수 이름을 통해 직접 접근 가능하다
- Heap 영역 : 데이터는 변수를 만들고 직접 변수 이름으로 접근하는 것이 아니라, 주소를 통해 접근
- text영역: 함수의 이름으로 접근, 해당 함수의 기계어 코드로 접근하는 것을 의미함
함수가 호출되면 해당 기계어 코드가 실행되어 해당 함수의 기능이 수행됨
* 함수가 가지고 있는 소스코드가 저장된 메모리 공간의 주소
(정리) * 자바에서는 존재하지 않음
자바스크립트의 function은 first class function(일등급함수)이라고도 하는데
함수의 이름을 하나의 주소값으로서 다룰 수 있다.
<script>
// function : 함수 - 자바의 메서드와 같은 개념
// hoisting : 함수의 선언은 코드상 어디에 작성해도, 모든 스크립트 코드의 '최상위'에 선언된 것으로 처리 됨.
// 매개변수의 자료형이 없다> 명시적 자료형이 없다.
function plus(num1, num2) { // 보통은 함수를 상단에다 만드는 것이 일반적
return num1 + num2;
}
// 함수의 이름은 해당 함수 객체의 참조를 가리키는 변수처럼 동작함
let abc = plus;
// 함수를 변수에 할당 가능,
// 변수 abc는 plus 함수 객체를 가리키는 것이 된다.
// 결국, 두 변수 모두 같은 함수 객체를 참조하게 된다.
// 실제로 변수 abc에 할당된 것은 함수의 주소 이며,
// 이 주소를 통해 해당 함수를 호출할 수 있음
let result = abc(20, 30);
// 따라서 abc(20,30)은 plus(20,30)과 동일한 결과를 반환함
console.log(result);
// <자바스크립트의 일급 객체>
// 함수를 변수에 할당하거나, 다른 함수의 매개변수로 전달하거나
// 함수에서 반환할 수 있음 => 함수를 자유롭게 다룰 수 있음
</script>
익명함수 생성하여 변수에 담기
// 익명함수 : 이름이 없는 함수, 변수에 할당되거나,
// 다른 함수의 매개변수로 전달될 때 주로 사용됨
let result2 = (function(num1,num2){
return num1*num2;
})(3,10);
// 함수를 소괄호로 감싸고 바로 메소드 콜하여 인자값을 넘겨주는 형태
// 이 함수는 딱 한번만 쓰여지고 버려지는 일회용 함수
// 이 함수는 주소값을 모른다.
// IIFE(Instantly Invoked Function Expression)
console.log(result2); // 30 출력
함수를 인자로 전달할 수 있고 함수가 다른 함수를 반환할 수 있다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=script, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
function plus(num1, num2) {
return num1 + num2;
}
function minus(num1, num2) {
return num1 - num2;
}
function temp(func, num1, num2) {
return func(num1, num2);
}
let result = temp(
function (num1, num2) {
return num1 * num2
}, 10, 5);
console.log(result); // 50
// 이 코드가 무슨 의미를 가지고 있는 지 생각해야함
// 함수의 주소를 인자값으로 넘기고 있는 상황
function test() {
return function (num1, num2) {
return num1 / num2;
}; //리턴값에 함수를 넣어준 상태
}
let result2 = test()(10, 2) //5
let result2 = test()(); //NaN
let result2 = test();
//ƒ (num1, num2) {
return num1 / num2;
}
let result2 = test;
//ƒ test() {
return function (num1, num2) {
return num1 / num2;
};
} // console로 출력했을 때
// > test의 주솟값이 출력되는 것
console.log(result2);
</script>
</body>
</html>
JavaScript 에서 Event란?
- 브라우저 위에서 취하는 모든 행동
(좌클릭, 마우스 움직임, 키보드 타이핑, 마우스 휠 움직임, 브라우저 크기 조정 등등..)
Event Source : 이벤트 발생의 근원 Element
Event Listener : 근원 Element가 감지할 수 있는 이벤트 종류
Event Handler : 이벤트 발생 시 처리 동작을 가지는 함수
pop 버튼 인스턴스의 주소를 담아보세요
자바스크립트에서 변수에 할당되는 것은 해당 값의 메모리 주소가 됨
따라서 document.getElementById('pop');은 문서에서 id가 pop인,
요소의 메모리 주소를 반환하고 , 이 메모리 주소를 변수 btn에 할당
> 즉, btn 변수엔 pop 버튼 요소의 메모리 주소가 저장되어 있음
> 이를 통해 해당 요소에 접근하고 조작할 수 있음
> > 변수에 인스턴스의 주소를 담는다는 뜻
<script>
// Event
let btn = document.getElementById('pop'); //pop 버튼 인스턴스의 주소를 담아보세요.
btn.onclick = function () {
alert("Pop!");
};
// 버튼-> Event Source
// onclick-> Event Listener
// function(){} -> Event handler
</script>
함수 pop을 위에서 만들었다면 바뀔 소스
<button id="pop">Pop!</button>
<script>
// Event
function pop() {
alert('pop!');
}
let btn = document.getElementById('pop'); //pop 버튼 인스턴스의 주소를 담아보세요.
btn.onclick = pop; // 함수의 주소를 넣어줘야한다.
// btn.onclick=pop(); > 오류 : 함수를 콜한것 , 실행하자마자 팝업창에 띄어지게됨
</script>
parseInt, Number
<script>
console.log(parseInt("10") + Number("10"));
// parseInt: 정수로 변환
// Number : 숫자로 변환
</script>
'2024_풀스택학원 > Back-end' 카테고리의 다른 글
[JSP] MVC2 (0) | 2024.05.24 |
---|---|
[JSP] WAS, Tomcat 설치 , Servlet (0) | 2024.05.22 |
[Java] JDBC_03_Login (0) | 2024.05.02 |
[Java] JDBC_02_Contact (0) | 2024.05.02 |
[Java] JDBC_mini_board (1) | 2024.05.02 |