● 함수
1. 인자(파라미터, parameter) : 매개변수(선언부)
2. 인수(아규먼트, argument) : 매개변수에 들어가는 값(사용부, 호출부)
● 함수의 선언
function 식별자(param1, param2, ...) {
코드 작성
return 리턴 값;
}
(1) function : 함수를 선언한다는 키워드(표시)
(2) parameter : 여러 개 있을 때에는 콤마로 분리하고 자료형을 따로 작성하지 않는다.(생략 가능)
(3) return : 사용하는 부분에 전달할 값 작성
● 동적 바인딩
- 컴파일 시 값에 따라 자료형이 동적으로 결정된다.
● hoisting(호이스팅)
- 선언의 위치에 상관없이 존재하면 메모리에 할당된다.
- 초기화 작업은 호이스팅 되지 않고 선언만 호이스팅된다.
● 가변인자
- 여러 개의 값을 전달받을 수 있는 매개변수
(...가변인자명)
- 몇 개의 값이 전달될 지 알 수 없을 때
- 각각의 값이 공통 요소일 때(순서가 상관없고, 특정 값만 가져올 필요 없을 때)
● includes()
- 문자열에 있는 includes()메소드에 조회할 값을 전달하면 포함되어 있을 때 true, 없을 때에는 false이다.
실습(js)
1. console.log() 출력
console.log("hello");
![](https://blog.kakaocdn.net/dn/dKXOcN/btrA4L1tz14/5ym7AuhF4OBAke6DhXPMYK/img.png)
2. variable
/*
contents: variable
*/
// 동적 바인딩 : 컴파일 시 값엔 따라 자료형이 동적으로 결정된다.
var data = 10;
console.log(data);
console.log(typeof(data));
var age;
console.log(age);
// hoisting(호이스팅) : 선언의 위치에 상관없이 존재하면 메모리에 할당된다.
// 초기화 작업은 호이스팅 되지 않고 선언만 호이스팅된다.
console.log(data2);
var data2 = 10;
console.log(data2);
var data3 = "절대 수정 금지";
// 되도록 var를 사용하여 변수를 선언한다.
data3 = "안녕";
console.log(data3);
![](https://blog.kakaocdn.net/dn/Ksiqv/btrA5ruGASn/ML9N0Y4ctxRUNrEKouMK10/img.png)
3. scope
// var로 선언된 변수는 함수가 아닌 다른 영역(제어문 영역)에서는 scope로 판단하지 않는다.
if(10 > 1){
// 지역변수 같지만 함수의 scope가 아니가 때문에 영역 밖에서도 사용할 수 있다.
var data4 = 10;
}
console.log(data4);
for(var i = 0; i < 10; i++){
}
console.log(i); // i 사용 가능
var x; // 전역변수
function f(){
var y; // 지역 변수
x = 10; // 전역 변수
y = 10; // 지역 변수
z = 10; // 전역 변수
}
f();
console.log("x : " + x);
console.log("z : " + z);
/* console.log(y); */ // y는 지역 변수이기 때문에 사용할 수 없다.
![](https://blog.kakaocdn.net/dn/dGz9y6/btrAYuTL5AP/P9rOhPIimy9bsFsYqO2Vj1/img.png)
4. const
const data = 10;
// data = 20; // const로 선언하면 값을 수정할 수 없다.
console.log(data);
![](https://blog.kakaocdn.net/dn/cO1WAF/btrA34gxdNw/TRSKUtB4qmPWmyC3jbIFSk/img.png)
5. let
let num = 10;
// let num = 20; // let은 중복 선언이 불가능하다.
num = 20;
console.log(num);
for(let i = 0; i < 10; i++){
}
// console.log(i); // let으로 선언된 i는 지역 변수이므로 사용할 수 없다.
if(10 > 1){
let l = 10;
}
console.log(l); // let으로 선언된 l는 지역 변수이므로 사용할 수 없다.
![](https://blog.kakaocdn.net/dn/X6331/btrA9jWO4xX/1WDvj7K3gFTwjBHt1XZfqk/img.png)
실습(function)
1. 1~10까지 출력하는 함수
function printFrom1To10(){
for(let i = 0; i < 10; i++){
console.log(i + 1);
}
}
printFrom1To10();
![](https://blog.kakaocdn.net/dn/LcCTA/btrAYuTL5A3/PkYuKnOOkwBlMhk4bqwEY0/img.png)
2. 1~10까지의 합을 출력하는 함수
function getTotal(){
let total = 0;
for(let i=0; i<10; i++){
total += i + 1;
}
console.log(total);
}
getTotal();
![](https://blog.kakaocdn.net/dn/blpwF0/btrA4StjqkZ/w4LBVmv2h2WSwyJvmIHHz1/img.png)
3. 1~n까지의 합을 출력하는 함수
function getTotalFrom1(end){
let total = 0;
for(let i=0; i<end; i++){
total += i + 1;
}
console.log(total);
}
getTotalFrom1(100);
![](https://blog.kakaocdn.net/dn/CjdPU/btrA53nlMIv/lFtpfeK90Yu3BMGD9uTUnK/img.png)
4. JS에서는 오버로딩을 지원하지 않는다.
- 오류 발생
function add(num1, num2, num3){
return num1 + num2 + num3;
}
function add(num1, num2){
return num1 + num2;
}
console.log(add(1, 3));
console.log(add(1, 3, 5));
실습(가변 인자)
1. 이름, 나이, 성별을 입력받고 이름이 없다면 "무명(no name)", 성별이 없다면 "선택 안함"을 대신 출력한다.
function intro(age, ...datas){
// 값이 존재하면 datas[0], 그렇지 않다면 "무명(no name)" 출력
let name = datas[0] || "무명(no name)";
let gender = datas[1] || "선택 안함";
console.log(name);
console.log(age + "살");
console.log(gender);
}
intro(10);
intro(10, "홍길동", "남자");
intro(10, "홍길동");
![](https://blog.kakaocdn.net/dn/pcHy8/btrA4Q3knga/nBIQiu0jKVbXKobbh3kHX1/img.png)
실습(includes())
console.log("ABC".includes("A"));
console.log("ABC".includes("Z"));
![](https://blog.kakaocdn.net/dn/bVeBMx/btrA3hM8h5L/dqvXpYNFkvY8mOCFZZsMgk/img.png)
실습(초기값 설정)
var data;
data = data || 10; // data의 값이 존재하면 해당 값 출력, undefined이면 10 출력
console.log(data);
![](https://blog.kakaocdn.net/dn/uOxhe/btrA9hSeIas/ZWp4neoWfbF8HROvvfWda1/img.png)
'웹 개발 > JavaScript' 카테고리의 다른 글
[Web_JavaScript] 06 (0) | 2022.05.02 |
---|---|
[Web_JavaScript] 05 (0) | 2022.05.01 |
[Web_JavaScript] 04 (0) | 2022.04.30 |
[Web_JavaScript] 02 (0) | 2022.04.28 |
[Web_JavaScript] 01 (0) | 2022.04.27 |