01. 함수 : 선억적 함수
JavaScript에서 선언적 함수를 사용하는 예시입니다.
{
function func(){
console.log("1. 함수가 실행되었습니다.");
}
func();
}
함수의 동작 내용은 중괄호 {} 내부에 작성됩니다. 여기서는 console.log("1. 함수가 실행되었습니다.");라는 문장이 포함되어 있습니다. 이는 함수가 호출되면 실행되는 코드입니다.
그리고 코드 끝에서 func();로 함수를 호출하고 있습니다. 이 호출을 통해 함수가 실행되고, "1. 함수가 실행되었습니다."라는 메시지가 콘솔에 출력됩니다.
요약하면, 선언적 함수는 function 키워드를 사용하여 정의하며, 필요에 따라 매개변수를 받을 수 있습니다. 함수는 호출되기 전까지는 실행되지 않으며, 호출 시에 함수 내의 코드가 실행됩니다.
결과 확인하기
02. 함수 : 익명 함수
JavaScript에서 익명 함수를 사용하는 예시입니다.
{
const func = function(){
console.log("2. 함수가 실행되었습니다.");
}
func();
}
익명 함수란 이름이 없는 함수를 의미합니다. 즉, 함수를 정의하면서 이름을 붙이지 않고 사용하는 것을 의미합니다. 위의 코드에서 함수는 변수 func에 직접 할당되어 이름이 없습니다.
함수의 동작 내용은 중괄호 {} 내부에 작성됩니다. 여기서는 console.log("2. 함수가 실행되었습니다.");라는 문장이 포함되어 있습니다. 이는 함수가 호출되면 실행되는 코드입니다.
그리고 코드 끝에서 func();로 함수를 호출하고 있습니다. 이 호출을 통해 함수가 실행되고, "2. 함수가 실행되었습니다."라는 메시지가 콘솔에 출력됩니다.
요약하면, 익명 함수는 이름이 없는 함수를 의미하며, 변수에 할당하여 사용할 수 있습니다. 변수에 할당된 익명 함수는 변수 이름을 통해 호출됩니다.
결과 확인하기
03. 함수 : 매개변수 함수
avaScript에서 매개변수를 가지는 함수를 정의하고 호출하는 예제입니다.
{
function func(str){
console.log(str);
}
func("3. 함수가 실행되었습니다.");
}
함수의 동작 내용은 중괄호 {} 내부에 작성됩니다. 여기서는 console.log(str);라는 문장이 포함되어 있습니다. 이 문장은 함수가 호출될 때 매개변수 str에 전달된 문자열을 콘솔에 출력합니다.
마지막으로, func("3. 함수가 실행되었습니다."); 코드에서 함수 func를 호출하고 있습니다. 이 호출은 함수를 실행하며, "3. 함수가 실행되었습니다."라는 문자열이 함수 내에서 콘솔에 출력됩니다.
요약하면, 매개변수를 가지는 함수는 함수를 호출할 때 값을 전달하기 위한 매개변수를 정의할 수 있으며, 함수 내에서 이 매개변수를 사용하여 작업을 수행할 수 있습니다.
결과 확인하기
04. 함수 : 리턴값 함수
JavaScript에서 리턴값을 가지는 함수를 정의하고 호출하는 예제입니다.
{
function func(){
return "4. 함수가 실행되었습니다.";
}
console.log(func());
}
함수 내부에 있는 return 키워드는 함수가 값을 반환할 때 사용됩니다. 즉, 함수가 호출될 때 특정 값을 반환하고 호출한 곳으로 돌아갑니다.
위의 예시에서 함수 func는 호출될 때 문자열 "4. 함수가 실행되었습니다."를 반환합니다.
마지막으로, console.log(func()); 코드에서 함수 func를 호출하고 있습니다. 함수는 실행되고, 반환된 값인 "4. 함수가 실행되었습니다."가 콘솔에 출력됩니다.
요약하면, 리턴값을 가지는 함수는 함수가 호출될 때 값을 반환하고, 호출한 곳에서 그 값을 활용할 수 있습니다.
결과 확인하기
05. 함수 : 매개변수 + 리턴값 함수
JavaScript에서 매개변수를 받아들이고 값을 반환하는 함수를 정의하고 호출하는 예제입니다.
{
function func(str){
return str;
}
console.log(func("5. 함수가 실행되었습니다."));
}
함수 내부에서 return 키워드를 사용하여 함수가 값을 반환하도록 정의하고 있습니다. 이 경우에는 매개변수 str을 반환합니다.
마지막으로, console.log(func("5. 함수가 실행되었습니다.")); 코드에서 함수 func를 호출하고 있습니다. 이 호출은 함수를 실행하며, 전달된 문자열 "5. 함수가 실행되었습니다."가 반환되어 콘솔에 출력됩니다.
요약하면, 이 함수는 매개변수를 받아들이고 해당 값을 반환하는 역할을 합니다. 함수를 호출할 때 전달된 값이 함수 내부로 전달되며, 이 값은 함수 내부에서 활용됩니다. 함수는 결과값을 반환하며, 이 값을 호출한 곳에서 활용할 수 있습니다.
결과 확인하기
06. 화살표 함수 : 선언적 함수
JavaScript에서 선언적 화살표 함수(arrow function)를 사용하는 예제입니다.
{
func = () => {
console.log("6. 함수가 실행되었습니다.");
}
func();
}
화살표 함수의 구문은 다음과 같습니다:
() => {
// 함수의 동작 내용
}
여기서 ()는 매개변수를 받지 않는 함수를 나타냅니다. 만약 매개변수가 필요하다면 (매개변수1, 매개변수2) => {}와 같이 괄호 안에 매개변수를 추가할 수 있습니다.
중괄호 {} 내부에는 함수의 동작 내용이 작성됩니다. 위 코드에서는 console.log("6. 함수가 실행되었습니다.");가 함수의 동작 내용입니다.
마지막으로, func(); 코드에서 함수 func를 호출하고 있습니다. 이 호출은 함수를 실행하며, "6. 함수가 실행되었습니다."라는 메시지가 콘솔에 출력됩니다.
요약하면, 선언적 화살표 함수는 화살표 함수 문법을 사용하여 함수를 정의하는 방법입니다. 함수 이름이 없으며, 중괄호 내부에 함수의 동작 내용을 작성합니다. 이후 함수는 변수에 할당되거나 호출될 수 있습니다.
결과 확인하기
07. 화살표 함수 : 익명 함수
JavaScript에서 익명 화살표 함수(anonymous arrow function)를 사용하는 예제입니다.
{
const func = () => {
console.log("7. 함수가 실행되었습니다.");
}
func();
}
화살표 함수의 구문은 다음과 같습니다:
() => {
// 함수의 동작 내용
}
여기서 ()는 매개변수를 받지 않는 함수를 나타냅니다. 만약 매개변수가 필요하다면 (매개변수1, 매개변수2) => {}와 같이 괄호 안에 매개변수를 추가할 수 있습니다.
중괄호 {} 내부에는 함수의 동작 내용이 작성됩니다. 위 코드에서는 console.log("7. 함수가 실행되었습니다.");가 함수의 동작 내용입니다.
마지막으로, func(); 코드에서 함수 func를 호출하고 있습니다. 이 호출은 함수를 실행하며, "7. 함수가 실행되었습니다."라는 메시지가 콘솔에 출력됩니다.
요약하면, 익명 화살표 함수는 함수를 정의하는 또 다른 방법으로, 이름이 없으며 변수에 할당되거나 다른 함수의 인자로 사용될 수 있습니다. 함수의 동작 내용은 중괄호 내부에 작성되며, 필요에 따라 매개변수를 받을 수 있습니다.
결과 확인하기
08. 화살표 함수 : 매개변수 함수
JavaScript에서 매개변수를 받아들이는 화살표 함수(arrow function)를 사용하는 예시입니다.
{
func = (str) => {
console.log(str);
}
func("8. 함수가 실행되었습니다.");
}
(매개변수) => {
// 함수의 동작 내용
}
여기서 (str)는 함수가 받아들이는 매개변수(parameter)를 나타냅니다. 이 화살표 함수는 str이라는 매개변수를 받아들이고 있습니다.
함수 내부의 중괄호 {} 안에는 함수의 동작 내용이 작성됩니다. 위 코드에서는 console.log(str);가 함수의 동작 내용입니다. 이 코드는 함수가 호출될 때 매개변수 str에 전달된 값을 콘솔에 출력합니다.
마지막으로, func("8. 함수가 실행되었습니다."); 코드에서 함수 func를 호출하고 있습니다. 함수 호출 시에는 인자로 전달된 문자열 "8. 함수가 실행되었습니다."가 함수 내에서 콘솔에 출력됩니다.
요약하면, 이 화살표 함수는 매개변수를 받아들이고 해당 값을 활용하는 역할을 합니다. 함수를 호출할 때 전달된 값이 함수 내부로 전달되며, 이 값을 함수 내부에서 활용합니다.
결과 확인하기
09. 화살표 함수 : 리턴값 함수
JavaScript에서 리턴값을 반환하는 화살표 함수(arrow function)를 사용하는 예시입니다.
{
func = () => {
return "9. 함수가 실행되었습니다.";
}
console.log(func());
}
() => {
// 함수의 동작 내용
return 값;
}
여기서 ()는 매개변수를 받지 않는 함수를 나타냅니다. 중괄호 {} 내부에는 함수의 동작 내용이 작성되며, 이 경우 return 키워드를 사용하여 함수가 반환할 값을 지정합니다.
위의 코드에서 함수는 아무런 매개변수를 받지 않으며, 함수 내부에서는 "9. 함수가 실행되었습니다."라는 문자열을 반환합니다.
마지막으로, console.log(func()); 코드에서 함수 func를 호출하고 있습니다. 함수가 실행되면 "9. 함수가 실행되었습니다."가 반환되어 콘솔에 출력됩니다.
요약하면, 리턴값을 반환하는 화살표 함수는 함수가 호출될 때 특정 값을 반환하고, 호출한 곳으로 돌아갑니다. 함수 내부에서 return 키워드를 사용하여 반환할 값을 명시합니다.
결과 확인하기
10. 화살표 함수 : 익명 함수 + 매개변수 + 리턴값
JavaScript에서 익명으로 정의된 화살표 함수입니다.
{
const func = (str) => {
return str;
}
console.log(func("10. 함수가 실행되었습니다."));
// 매개변수 할개일때 괄호 생략 가능
const func = (str) => return str;
console.log(func("10. 함수가 실행되었습니다."));
// 리턴 생략
const func = (str) => str;
console.log(func("10. 함수가 실행되었습니다."));
// 익명 생략 (가독성 나쁨)
func = (str) => str;
console.log(func("10. 함수가 실행되었습니다."));
}
화살표 함수의 구문은 다음과 같습니다:
(매개변수) => {
return 반환값;
}
여기서 (str)는 함수가 받아들이는 매개변수(parameter)를 나타냅니다. 이 함수는 str이라는 매개변수를 받아들이고 있습니다.
함수 내부에서 return 키워드를 사용하여 함수가 값을 반환하도록 정의하고 있습니다. 이 경우에는 매개변수 str을 반환합니다.
마지막으로, console.log(func("10. 함수가 실행되었습니다.")); 코드에서 함수 func를 호출하고 있습니다. 함수는 실행되며, 전달된 문자열 "10. 함수가 실행되었습니다."가 반환되어 콘솔에 출력됩니다.
요약하면, 이 화살표 함수는 매개변수를 받아들이고 해당 값을 반환하는 역할을 합니다. 함수를 호출할 때 전달된 값이 함수 내부로 전달되며, 이 값을 함수 내부에서 활용합니다. 함수는 결과값을 반환하며, 이 값을 호출한 곳에서 활용할 수 있습니다.
결과 확인하기
11. 함수 유형 : 함수와 매개변수를 이용한 형태
JavaScript에서 함수와 매개변수를 사용하는 예제입니다
{
function func(num, str){
console.log(num + ". " + str);
console.log(`${num}. ${str}`); // 템플릿 리터럴
}
func(11, "함수가 실행되었습니다.");
}
함수 내부에는 두 개의 console.log 문이 있습니다. 첫 번째 console.log는 문자열 연결을 사용하여 num과 str을 조합하여 출력합니다. 두 번째 console.log는 템플릿 리터럴을 사용하여 동일한 결과를 출력합니다.
템플릿 리터럴은 백틱 (``)으로 묶인 문자열로, 변수나 표현식을 ${} 안에 넣어서 문자열 안에 삽입할 수 있는 기능을 제공합니다.
마지막으로, func(11, "함수가 실행되었습니다."); 코드에서 함수 func를 호출하고 있습니다. 이 호출은 함수를 실행하며, 함수 내에서 num과 str을 활용하여 두 번의 출력을 수행합니다.
요약하면, 함수는 코드 블록을 재사용 가능한 단위로 묶어주며, 매개변수를 통해 함수에 값을 전달할 수 있습니다. 함수 내부에서는 전달받은 값을 활용하여 원하는 동작을 수행할 수 있습니다.
결과 확인하기
12. 함수 유형 : 함수와 변수를 이용한 형태
JavaScript에서 함수와 변수를 사용하는 예제입니다.
{
const num = 12;
const str = "함수가 실행되었습니다."
function func(num, str){
console.log(`${num}. ${str}`);
}
func(num, str);
}
다음으로 function func(num, str){}은 함수를 정의하는 부분입니다. func이라는 함수 이름을 가지고 있으며, 매개변수 num과 str을 받습니다.
함수 내부에는 템플릿 리터럴을 사용하여 ${num}. ${str}를 출력하고 있습니다. 이 부분은 매개변수 num과 str을 조합하여 출력하는 역할을 합니다.
마지막으로, func(num, str); 코드에서 함수 func를 호출하고 있습니다. 이 호출은 함수를 실행하며, 전달된 num과 str 값을 사용하여 "12. 함수가 실행되었습니다."라는 문자열을 출력합니다.
이 코드의 전체적인 흐름은 다음과 같습니다:
1. num과 str 변수가 초기화됩니다.
2. func 함수가 정의되고, num과 str을 인자로 받습니다.
3. 함수 내부에서 num과 str을 조합하여 출력합니다.
4. 함수가 호출되어 실행됩니다.
결과 확인하기
13. 함수 유형 : 함수와 배열을 이용한 형태
JavaScript에서 함수와 배열을 사용하는 예제입니다.
{
const num = [13, "13-1"];
const str = ["함수가 실행되었습니다.", "함수가 실행되었습니다."];
function func(num, str){
console.log(`${num}. ${str}`);
}
func(num[0], str[0]);
func(num[1], str[1]);
}
다음으로 function func(num, str){} 코드는 함수를 정의하는 부분입니다. func이라는 함수 이름을 가지고 있으며, 매개변수 num과 str을 받습니다.
함수 내부에서는 템플릿 리터럴을 사용하여 ${num}. ${str}를 출력하고 있습니다. 이 부분은 매개변수 num과 str을 조합하여 출력하는 역할을 합니다.
마지막으로, func(num[0], str[0]);와 func(num[1], str[1]); 코드에서 함수 func를 호출하고 있습니다. 이 호출은 함수를 실행하며, 배열의 원소를 함수의 매개변수로 전달하여 각각의 결과를 출력합니다.
이 코드의 전체적인 흐름은 다음과 같습니다:
1. num과 str 배열이 초기화됩니다.
2. func 함수가 정의되고, num과 str을 인자로 받습니다.
3. 함수 내부에서 num과 str을 조합하여 출력합니다.
4. 함수가 호출되어 실행됩니다. 호출 시에는 각각의 배열 원소가 함수에 전달됩니다.
결과 확인하기
14. 함수 유형 : 함수와 객체를 이용한 형태
JavaScript에서 함수와 객체를 사용하는 예제입니다.
{
const info = {
num: 14,
str: "함수가 실행되었습니다.",
};
function func(num, str){
console.log(`${num}. ${str}`);
}
func(info.num, info.str);
}
다음으로 function func(num, str){} 코드는 함수를 정의하는 부분입니다. func이라는 함수 이름을 가지고 있으며, 매개변수 num과 str을 받습니다.
함수 내부에서는 템플릿 리터럴을 사용하여 ${num}. ${str}를 출력하고 있습니다. 이 부분은 매개변수 num과 str을 조합하여 출력하는 역할을 합니다.
마지막으로, func(info.num, info.str); 코드에서 함수 func를 호출하고 있습니다. 이 호출은 함수를 실행하며, 객체 info의 속성인 num과 str을 함수의 매개변수로 전달하여 "14. 함수가 실행되었습니다."라는 문자열을 출력합니다.
이 코드의 전체적인 흐름은 다음과 같습니다:
1. info 객체가 초기화됩니다.
2. func 함수가 정의되고, num과 str을 인자로 받습니다.
3. 함수 내부에서 num과 str을 조합하여 출력합니다.
4. 함수가 호출되어 실행됩니다. 호출 시에는 info 객체의 속성값이 함수에 전달됩니다.
결과 확인하기
15. 함수 유형 : 함수와 객체 및 배열을 이용한 형태
JavaScript에서 함수와 객체 배열을 사용하는 예제입니다.
{
const info = [
{num: 15, str: "함수가 실행되었습니다."},
{num: "15-1", str: "함수가 실행되었습니다."},
];
function func(num, str){
console.log(`${num}. ${str}`);
}
func(info[0].num, info[0].str);
func(info[1].num, info[1].str);
}
다음으로 function func(num, str){} 코드는 함수를 정의하는 부분입니다. func이라는 함수 이름을 가지고 있으며, 매개변수 num과 str을 받습니다.
함수 내부에서는 템플릿 리터럴을 사용하여 ${num}. ${str}를 출력하고 있습니다. 이 부분은 매개변수 num과 str을 조합하여 출력하는 역할을 합니다.
마지막으로, func(info[0].num, info[0].str);와 func(info[1].num, info[1].str); 코드에서 함수 func를 호출하고 있습니다. 이 호출은 함수를 실행하며, info 배열의 첫 번째 객체와 두 번째 객체의 속성값을 함수의 매개변수로 전달하여 각각의 결과를 출력합니다.
이 코드의 전체적인 흐름은 다음과 같습니다:
1. info 배열이 초기화됩니다.
2. func 함수가 정의되고, num과 str을 인자로 받습니다.
3. 함수 내부에서 num과 str을 조합하여 출력합니다.
4. 함수가 호출되어 실행됩니다. 호출 시에는 info 배열의 객체들의 속성값이 함수에 전달됩니다.
결과 확인하기
16. 함수 유형 : 함수와 객체 안에 함수를 이용한 형태
JavaScript에서 함수와 객체 내부에 함수를 정의하고 호출하는 예제입니다.
{
const info = {
num: 16,
str: "함수가 실행되었습니다.",
result: () => {
console.log(`${info.num}. ${info.str}`);
},
// 약식 result: () => console.log(`${info.num}. ${info.str}`),
}
info.result();
}
이 화살표 함수는 console.log(${info.num}. ${info.str});을 실행합니다. 여기서 info.num과 info.str은 객체 info의 속성에 접근하여 값을 가져오는 역할을 합니다.
마지막으로, info.result(); 코드에서 객체 info의 result 함수를 호출하고 있습니다. 이 호출은 함수를 실행하며, 결과적으로 "16. 함수가 실행되었습니다."가 콘솔에 출력됩니다.
이 코드의 전체적인 흐름은 다음과 같습니다:
1. info 객체가 초기화됩니다.
2. result 함수는 객체 info에 속성으로 정의됩니다. 이 함수는 객체 내부의 속성 num과 str을 활용하여 결과를 출력합니다.
3. info.result() 코드에서 객체 info의 result 함수가 호출되어 실행됩니다. 함수 실행 시 결과가 콘솔에 출력됩니다.
결과 확인하기
17. 함수 유형 : 객체 생성자 함수
JavaScript에서 객체 생성자 함수를 사용하여 객체를 생성하고 메서드를 포함시키는 예제입니다.
{
function Func(num, str){
this.num = num;
this.str = str;
this.result = () => {
console.log(`${num}. ${str}`);
}
}
// 인스턴스 생성
const info1 = new Func(17, "함수가 실행되었습니다.");
const info2 = new Func("17-1", "함수가 실행되었습니다.");
//호출
info1.result();
info2.result();
}
2. this.num = num;과 this.str = str;은 생성된 객체의 속성을 초기화합니다. 각 객체는 num과 str이라는 속성을 가지며, 이 값은 함수를 호출할 때 전달된 인자에 따라 결정됩니다.
3. this.result = () => { console.log(${num}. ${str}); }은 객체에 result라는 메서드를 추가합니다. 이 메서드는 화살표 함수로 정의되어 있습니다. 이 함수는 num과 str을 활용하여 결과를 콘솔에 출력합니다.
4. const info1 = new Func(17, "함수가 실행되었습니다.");과 const info2 = new Func("17-1", "함수가 실행되었습니다."); 코드는 Func 객체 생성자 함수를 사용하여 info1과 info2라는 두 개의 객체를 생성합니다. 각각의 객체는 num과 str 속성을 가지며, result 메서드를 호출할 수 있습니다.
5. info1.result();과 info2.result(); 코드는 각 객체의 result 메서드를 호출합니다. 이는 객체의 num과 str 속성을 활용하여 결과를 콘솔에 출력합니다.
이와 같이 객체 생성자 함수를 사용하면, 여러 개의 객체를 생성하고 각 객체마다 고유한 속성과 메서드를 가질 수 있습니다.
결과 확인하기
18. 함수 유형 : 프로토타입 함수
JavaScript에서 프로토타입 함수를 사용하여 객체를 생성하는 예제입니다.
{
function Func(num, str){
this.num = num;
this.str = str;
}
Func.prototype.result = function(){
console.log(`${this.num}. ${this.str}`);
}
// Func.prototype.result = () => {
// console.log(`${this.num}. ${this.str}`);
// }
// 여기서 문제는 Func.prototype.result에 화살표 함수(arrow function)를 사용한 부분입니다.
// 화살표 함수는 자신만의 this 컨텍스트를 가지지 않고, 주변 스코프의 this 값을 가져옵니다. 따라서 this.num과 this.str은 undefined가 될 것입니다.
const info1 = new Func(18, "함수가 실행되었습니다.");
const info2 = new Func("18-1", "함수가 실행되었습니다.");
info1.result();
info2.result();
}
2. this.num = num;과 this.str = str;은 생성된 객체의 속성을 초기화합니다. 각 객체는 num과 str이라는 속성을 가지며, 이 값은 함수를 호출할 때 전달된 인자에 따라 결정됩니다.
3. Func.prototype.result = function(){ ... }은 Func 생성자 함수의 프로토타입에 result 메서드를 추가합니다. 이 메서드는 함수로써 정의되어 있습니다.
4. const info1 = new Func(18, "함수가 실행되었습니다.");과 const info2 = new Func("18-1", "함수가 실행되었습니다."); 코드는 Func 객체 생성자 함수를 사용하여 info1과 info2라는 두 개의 객체를 생성합니다. 각각의 객체는 num과 str 속성을 가지며, result 메서드를 호출할 수 있습니다.
5. info1.result();과 info2.result(); 코드는 각 객체의 result 메서드를 호출합니다. 이는 객체의 num과 str 속성을 활용하여 결과를 콘솔에 출력합니다.
프로토타입은 JavaScript에서 객체지향 프로그래밍을 할 때 중요한 개념 중 하나입니다. 프로토타입을 사용하면 객체의 메서드와 속성을 공유할 수 있어 메모리를 절약하고 코드의 효율성을 높일 수 있습니다.
결과 확인하기
19. 함수 유형 : 객체 리터럴 함수
JavaScript에서 객체 리터럴을 사용하여 프로토타입에 메서드를 정의하는 예제입니다.
{
function Func(num, str){
this.num = num;
this.str = str;
}
Func.prototype = {
result1 : function(){
console.log(`${this.num}. ${this.str}`);
},
result2 : function(){
console.log(`${this.num}. ${this.str}`);
},
}
const info1 = new Func(19, "함수가 실행되었습니다.");
const info2 = new Func("19-1", "함수가 실행되었습니다.");
info1.result1();
info2.result2();
}
2. this.num = num;과 this.str = str;는 생성된 객체의 속성을 초기화합니다. 각 객체는 num과 str이라는 속성을 가지며, 이 값은 함수를 호출할 때 전달된 인자에 따라 결정됩니다.
3. Func.prototype = { ... }은 Func 생성자 함수의 프로토타입을 객체 리터럴로 덮어씁니다. 이 객체 리터럴은 result1과 result2라는 두 개의 메서드를 가지고 있습니다.
4. result1 : function(){ ... }과 result2 : function(){ ... }는 메서드를 정의합니다. 각각의 메서드는 console.log를 사용하여 객체의 num과 str 속성을 활용하여 결과를 출력합니다.
5. const info1 = new Func(19, "함수가 실행되었습니다.");과 const info2 = new Func("19-1", "함수가 실행되었습니다."); 코드는 Func 객체 생성자 함수를 사용하여 info1과 info2라는 두 개의 객체를 생성합니다. 각각의 객체는 num과 str 속성을 가지며, result1과 result2 메서드를 호출할 수 있습니다.
6. info1.result1();과 info2.result2(); 코드는 각 객체의 메서드를 호출합니다. 이는 객체의 num과 str 속성을 활용하여 결과를 콘솔에 출력합니다.
이 코드의 전체적인 흐름은 다음과 같습니다:
1. Func 객체 생성자 함수가 정의됩니다.
2. 객체 생성자 함수의 프로토타입이 객체 리터럴로 덮어씌워집니다.
3. 객체를 생성하면서 초기값을 전달합니다.
4. 객체의 메서드를 호출하여 결과를 출력합니다.
결과 확인하기
20. 함수 : 즉시실행 함수
두 개의 익명 함수를 정의하고 즉시 실행하는 예제입니다.
{
// 첫번째
(function (){
console.log(20, "함수가 실행되었습니다.");
})();
// 두번째
(() => {
console.log("20-1. 함수가 실행되었습니다.");
})();
}
두번째 함수 : 두 번째 함수는 화살표 함수로 정의되어 있습니다. 마찬가지로 익명 함수를 정의하고 즉시 실행합니다. 이 함수는 콘솔에 "20-1. 함수가 실행되었습니다."를 출력합니다.
결과 확인하기
21. 함수 : 파라미터 함수
두 개의 함수를 정의하고 호출하는 예제입니다. 각 함수는 기본 매개변수 값을 가지고 있어, 매개변수가 제공되지 않으면 기본값이 사용됩니다.
{
function func1(str = "21. 함수가 실행되었습니다."){
console.log(str);
}
func1();
const func2 = (str = "21-1. 함수가 실행되었습니다.") => {
console.log(str);
}
func2();
}
· 이 함수는 func1이라는 이름의 함수를 정의합니다.
· 함수는 str이라는 매개변수를 가지며, 기본값으로 "21. 함수가 실행되었습니다."를 가집니다.
· 함수 내부에서는 console.log를 사용하여 str을 출력합니다.
· 함수를 호출할 때, 별도의 매개변수를 제공하지 않았기 때문에 기본값이 사용되어 "21. 함수가 실행되었습니다."가 출력됩니다.
두 번째 함수 func2 (화살표 함수로 정의):
· 두 번째 함수는 화살표 함수로 정의되어 있습니다.
· 함수는 str이라는 매개변수를 가지며, 기본값으로 "21-1. 함수가 실행되었습니다."를 가집니다.
· 함수 내부에서는 console.log를 사용하여 str을 출력합니다.
· 함수를 호출할 때, 별도의 매개변수를 제공하지 않았기 때문에 기본값이 사용되어 "21-1. 함수가 실행되었습니다."가 출력됩니다.
결과 확인하기
22. 함수 : 재귀 함수
재귀 함수란, 함수가 자기 자신을 호출하는 것을 의미합니다. 이를 통해 함수는 반복적인 작업을 수행할 수 있습니다.
{
function func1(num){
for(let i=1; i<=num; i++){
console.log("22. 함수가 실행되었습니다.");
}
}
func1(3);
function func2(num){
if(num <= 0) return;
console.log("22-1. 함수가 실행되었습니다.");
func2(num -1);
}
func2(3);
}
· func1 함수는 num이라는 매개변수를 받습니다.
· 함수 내에서 for 루프를 사용하여 i가 0부터 num까지 반복됩니다.
· 각 반복에서는 콘솔에 "22. 함수가 실행되었습니다."라는 메시지가 출력됩니다.
└ 예를 들어, func1(10)을 호출하면 0부터 10까지 총 11번의 메시지가 출력됩니다.
func2 함수:
· func2는 매개변수 num을 받습니다.
· if(num <= 0) 조건문을 사용하여 num이 0 이하인 경우 함수를 종료합니다.
· "22-1. 함수가 실행되었습니다."를 출력한 후, func2 함수를 재귀적으로 호출하며 num을 1 감소시킵니다.
· 이로써 func2 함수는 num이 0 이하가 될 때까지 계속 호출됩니다.
결과 확인하기
결과 확인하기
23. 함수 : 콜백 함수
JavaScript에서 콜백 함수를 사용하는 예제를 보여줍니다. 콜백 함수는 다른 함수에 전달되어 실행될 함수를 의미합니다. 이는 비동기적인 작업을 처리하거나 코드의 흐름을 관리하는데 사용됩니다.
{
// 01 이벤트 콜백 함수
function func1(){
console.log("23. 함수가 실행되었습니다.");
}
btn.addEventListener("click", func1);
// 02 함수를 다른 함수의 인자로 전달
function func2(){
console.log("23-1. 함수가 실행되었습니다.");
}
function func3(callback){
callback();
}
func3(func2);
// 03 반복문으로 콜백함수 만들기
function func4(num){
console.log("23-" + num + "함수가 실행되었습니다.");
}
function func5(callback){
for(let i=2; i<=11; i++){
callback(i);
}
}
func5(func4);
}
· func1 함수는 단순히 콘솔에 메시지를 출력합니다.
· btn.addEventListener("click", func1);은 버튼(btn)을 클릭했을 때 func1 함수가 실행되도록 이벤트 리스너를 등록하는 코드입니다.
2. 함수를 다른 함수의 인자로 전달:
· func2 함수는 콘솔에 메시지를 출력합니다.
· func3 함수는 콜백 함수 callback을 받아와서 실행합니다. 이 경우에는 func2 함수가 callback으로 전달되어 실행됩니다.
3. 반복문으로 콜백 함수 만들기:
· func4 함수는 매개변수 num을 받아서 메시지를 출력합니다.
· func5 함수는 콜백 함수 callback을 받아와서 반복문을 통해 숫자를 증가시키며 콜백 함수를 실행합니다. 이 경우에는 func4 함수가 콜백으로 전달되어 실행됩니다.
결과 확인하기
24. 함수 : 비동기 함수 : 콜백 함수
JavaScript를 사용하여 동기 및 비동기 함수 호출 및 콜백 함수의 개념을 설명하는 예제들을 보여줍니다.
{
// 01 동기적인 함수 호출
function func1(){
console.log("24. 함수가 실행되었습니다.");
}
function func2(){
console.log("24-1. 함수가 실행되었습니다.");
}
func1();
func2();
// 02 비동기적인 함수 호출
function func3(){
setTimeout(() => {
console.log("24-2. 함수가 실행되었습니다.");
}, 1000);
}
function func4(){
console.log("24-3. 함수가 실행되었습니다.");
}
func3();
func4();
// 03 비동기적인 콜백함수 호출
function func5(callback){
setTimeout(() => {
console.log("24-4. 함수가 실행되었습니다.");
callback();
}, 1000);
}
function func6(){
console.log("24-5. 함수가 실행되었습니다.");
}
func5(function(){
func6();
});
// 콜백 지옥
function funcA(callback){
setTimeout(() => {
console.log("funcA가 실행되었습니다.");
callback();
}, 1000);
}
function funcB(callback){
setTimeout(() => {
console.log("funcB가 실행되었습니다.");
callback();
}, 1000);
}
function funcC(callback){
setTimeout(() => {
console.log("funcC가 실행되었습니다.");
callback();
}, 1000);
}
function funcD(){
setTimeout(() => {
console.log("funcD가 실행되었습니다.");
}, 1000);
}
funcA(function(){
funcB(function(){
funcC(function(){
funcD();
});
});
});
}
· func1과 func2라는 두 개의 함수가 정의되었습니다.
· func1은 즉시 호출되어 "24. 함수가 실행되었습니다."를 출력합니다.
· 그 다음으로 func2가 호출되어 "24-1. 함수가 실행되었습니다."를 출력합니다.
· 이것은 함수 호출이 순차적으로 실행되어 먼저 func1이 완료된 후 func2가 실행됨을 의미합니다.
비동기적인 함수 호출:
func3와 func4라는 두 개의 함수가 정의되었습니다.
· func3은 1초 후에 실행되는 setTimeout 함수를 사용하여 "24-2. 함수가 실행되었습니다."를 출력합니다.
· func4는 func3 다음에 즉시 호출되어 "24-3. 함수가 실행되었습니다."를 출력합니다.
· 이로 인해 func4가 func3의 실행을 기다리지 않고 비동기적으로 실행됩니다.
비동기적인 콜백 함수 호출:
· func5와 func6라는 두 개의 함수가 정의되었습니다.
· func5는 1초 후에 실행되는 setTimeout 함수를 사용하여 "24-4. 함수가 실행되었습니다."를 출력하고, 그 다음에 콜백 함수를 호출합니다.
· 콜백 함수는 func6를 호출하고, 이로 인해 "24-5. 함수가 실행되었습니다."가 출력됩니다.
· 이것은 비동기적인 콜백 함수의 예제로, func5가 실행이 끝날 때까지 기다리지 않고 다음 작업을 수행합니다.
콜백 지옥:
· 이 부분에서는 콜백 함수를 중첩하여 사용하는 "콜백 지옥" 예제를 보여줍니다. funcA, funcB, funcC, 그리고 funcD라는 네 개의 함수가 정의됩니다.
· 각 함수는 1초 후에 실행되고, 그 중간에 콜백 함수가 사용됩니다.
· funcA가 실행되면, funcB가 실행되고, funcB가 실행되면 funcC가 실행되고, 마지막으로 funcC가 실행되면 funcD가 실행됩니다.
· 이것은 콜백 함수가 중첩되어 복잡성을 증가시키는 "콜백 지옥" 상황을 보여줍니다. 이러한 상황을 피하기 위해 Promise나 async/await과 같은 비동기 처리 방법을 사용할 수 있습니다.
결과 확인하기
24-1. 함수가 실행되었습니다.
24-3. 함수가 실행되었습니다.
24-2. 함수가 실행되었습니다.
24-4. 함수가 실행되었습니다.
24-5. 함수가 실행되었습니다.
funcA가 실행되었습니다.
funcB가 실행되었습니다.
funcC가 실행되었습니다.
funcD가 실행되었습니다.
25. 함수 : 비동기 함수 : 프로미스
{
let data = true;
const func = new Promise((resolve, reject) => {
if(data){
resolve("25. 함수가 실행되었습니다.");
} else {
reject("25. 함수가 실행되지 않았습니다.")
}
});
func
.then(
result => console.log(result)
)
.catch(
error => console.log(error)
)
// 콜백지옥 --> 프로미스
function funcA(){
return new Promise((resolve) => {
setTimeout(() => {
console.log("funcA가 실행되었습니다.");
resolve();
}, 1000);
});
}
function funcB(){
return new Promise((resolve) => {
setTimeout(() => {
console.log("funcB가 실행되었습니다.");
resolve();
}, 1000);
});
}
function funcC(){
return new Promise((resolve) => {
setTimeout(() => {
console.log("funcC가 실행되었습니다.");
resolve();
}, 1000);
});
}
function funcD(){
return new Promise((resolve) => {
setTimeout(() => {
console.log("funcD가 실행되었습니다.");
resolve();
}, 1000);
});
}
funcA()
.then(funcB)
.then(funcC)
.then(funcD)
.catch((error) => {
console.log(error)
})
}
· func는 새로운 Promise를 생성합니다. 이 Promise는 resolve와 reject 콜백 함수를 받습니다.
· data가 true이기 때문에 resolve가 호출되어 "25. 함수가 실행되었습니다."가 출력됩니다.
콜백지옥을 Promise 체이닝으로 대체
· funcA, funcB, funcC, funcD 함수는 각각 1초 후에 실행되는 Promise를 반환합니다.
· funcA가 끝나면 funcB가 실행되고, 그 다음은 funcC, 그리고 마지막으로 funcD가 실행됩니다.
· 만약 중간에 어떤 함수에서라도 오류가 발생하면 catch 블록이 실행됩니다.
결과 확인하기
funcA가 실행되었습니다.
funcB가 실행되었습니다.
funcC가 실행되었습니다.
funcD가 실행되었습니다.
26. 함수 : 비동기 함수 : asyne/await
{
// 01
function func(){
console.log("26. 함수가 실행되었습니다.")
}
func();
// 02
async function func1(){
console.log("26-1. 함수가 실행되었습니다.")
}
func1();
// 03
async function func2(){
const result = await fetch("https://webstoryboy.github.io/webs2024/json/gineungsaJC2011_05.json")
const data = await result.json();
console.log(data);
}
func2();
// 04
async function func3(){
try {
const result = await fetch("https://webstoryboy.github.io/webs2024/json/gineungsaJC2011_05.json")
const data = await result.json();
console.log(data);
} catch(error){
console.log(error);
}
}
func3();
}
func 함수는 "26. 함수가 실행되었습니다."를 출력합니다.
2. 비동기 함수 호출 (async/await 사용하지 않음)
async 키워드로 정의된 func1 함수는 비동기 함수입니다. 하지만 내부에서 await를 사용하지 않기 때문에 동기적으로 실행됩니다.
3. 비동기 함수 호출 (fetch와 await 사용)
func2는 비동기 함수입니다. 내부에서 await를 사용하여 fetch를 호출하고, 그 결과를 처리합니다. 이 함수는 URL에서 JSON 데이터를 가져와서 출력합니다.
4. 비동기 함수 호출 (에러 처리)
func3는 비동기 함수로, 마찬가지로 URL에서 JSON 데이터를 가져옵니다. 그러나 try-catch 블록을 사용하여 예외를 처리합니다. 만약 데이터를 가져오는 과정에서 오류가 발생하면 catch 블록에서 오류를 처리하고 출력합니다.
결과 확인하기
26-1. 함수가 실행되었습니다.