01. 선언적 함수
함수를 만드는 일반적은 방식으로 익명 함수와 다르게 특정한 이름을 갖고 있는 함수이다.
function func(){
document.write("함수가 실행되었습니다.1");
}
func();
결과보기
02. 익명 함수
익명 함수는 변수에 함수 데이터를 저장하는 변수를 마치 함수처럼 사용 할 수 있도록 만들어 줍니다.
// function과 () 사이에 특정한 함수 이름이 존재하지 않는다.
const func = function(){ //변수안에 함수가 들어가서 익명함수라 명명했다.
document.write("함수가 실행되었습니다.2");
}
func();
결과보기
03. 매개변수 함수
매개변수(parameter)란 함수를 호출할 때 전달하는 변수를 '매개변수'라고 합니다. <br> 인수(argument)란 함수가 호출될 때 함수로 값을 전달해주는 값을 말합니다.
// 변수 : 지역변수 + 전역변수 + 매개변수
// 함수 : 지역함수 + 전역함수
function func(str){ //파리미터 = 인자 = 매개변수
document.write(str);
//return str이 생략되어있음
//자바스크립트에서는 함수를 정의할 때는 매개변수의 타입을 따로 명시하지 않습니다.
}
func("함수가 실행되었습니다.3");
결과보기
04. 리턴값 함수
return 이란 것은 함수를 호출했을 때, 함수가 값을 반환한다는 의미이다.
function func(){
const str = "함수가 실행되었습니다.4";
//document.write(str);
return str; // return은 함수를 통해 처리된 결과를 반화시켜주는 명령어입니다.
}
document.write(func());
// ECMAscript1
// ECMAscript2
// ECMAscript3
// ECMAscript4
// ECMAscript5
// ECMAscript6(es6) 화살표 함수, let, const
결과보기
05. 화살표 함수 : 선언적 함수
함수를 변수에 할당해 주는 것으로 함수 선언문과 문법만 다르고 동작방식, 실행방식도 동일하다.
// function func(){
// document.write("함수가 실행되었습니다.5");
// }
// func();
// func = () => { //구조를 기억하자
// document.write("함수가 실행되었습니다.5");
// }
// func();
func = () => document.write("함수가 실행되었습니다.5"); //리턴문이 있으면 {}를 생략할 수 있다.
func(); //근데 리턴문이 한줄이면 그 ()마저도 생략할 수 있다.
결과보기
06. 화살표 함수 : 익명 함수
화살표함수는 익명 함수를 변수에 지정할 때 많이 사용합니다.
// const func = function() {
// document.write("함수가 실행되었습니다.6<br>");
// }
// func();
// const func = () => { //var/let/const 함수명 = (매개변수) => {실행문}
// document.write("함수가 실행되었습니다.6<br>");
// }
const func = () => document.write("함수가 실행되었습니다.6<br>");
func();
결과보기
07. 화살표 함수 : 매개변수 함수
컴퓨터 프로그래밍에서 아직 알려지지 않거나 어느 정도까지만 알려져 있는 양이나 정보에 대한 상징적인 이름이다.
// function func(str){
// document.write(str);
// }
// func("함수가 실행되었습니다.7<br>");
func = (str) => {
document.write(str);
}
// func = (str) => document.write(str);
// func = str => document.write(str); //변수가 하나일때 사용 가능하다.
func("함수가 실행되었습니다.7<br>");
결과보기
08. 화살표 함수 : 리턴값 함수
// function func() {
// const str = "함수가 실행되었습니다.8<br>";
// return str;
// }
// document.write(func());
func = () => {
const str = "함수가 실행되었습니다.8<br>";
return str;
}
document.write(func());
결과보기
09. 화살표 함수 : 익명 함수 + 매개변수 + 리턴값
const func = (str) => {
return str;
}
document.write(func("함수가 실행되었습니다.9<br>"));
결과보기
10. 화살표 함수 : 익명 함수 + 매개변수 + 리턴값 + 괄호 생략
const func = (str) => str;
document.write(func("함수가 실행되었습니다.11"))
결과보기
11. 화살표 함수 : 익명 함수 + 매개변수 + 리턴값 + 괄호 생략 + 리턴 생략
const func = (str) => str;
document.write(func("함수가 실행되었습니다.11<br>"))
결과보기
12. 화살표 함수 : 선언적 함수 + 매개변수 + 리턴값 + 괄호 생략 + 리턴 생략
func = str => str;
document.write(func("함수가 실행되었습니다.12"))
결과보기
13. 화살표 함수 : 선언적 함수 + 매개변수 + 리턴값 + 괄호 생략 + 리턴 생략
function func(num, str1, str2){ //재활용하기가 용의하다.
document.write(num + str1 + "가" + str2 + "되었습니다.15<br>")
}
const info = [
{
num : "1.",
name : "함수",
com : "실행"
},
{
num : "2.",
name : "자바스크립트",
com : "실행"
},
{
num : "3.",
name : "제이쿼리",
com : "실행"
}
]
func(info[0].num, info[0].name, info[0].com);
func(info[1].num, info[1].name, info[1].com);
func(info[2].num, info[2].name, info[2].com);
결과보기
14. 화살표 함수 : 선언적 함수 + 매개변수 + 리턴값 + 괄호 생략 + 리턴 생략
function func(num, str1, str2){
document.write(num + str1 + "가" + str2 + "되었습니다.15<br>")
}
const youNum1 = 1;
const youNum2 = 2;
const youNum3 = 3;
const youStr1 = "함수";
const youStr2 = "자바스크립트";
const youStr3 = "제이쿼리";
const youCom1 = "실행";
func(youNum1, youStr1, youCom1);
func(youNum2, youStr2, youCom1);
func(youNum3, youStr3, youCom1);
결과보기
15. 함수 유형 : 함수와 배열,객체를 이용한 형태
function func(num, str1, str2) { //재활용하기가 용의하다.
document.write(num + str1 + "가" + str2 + "되었습니다.15<br>")
}
const info = [
{
num: "1.",
name: "함수",
com: "실행"
},
{
num: "2.",
name: "자바스크립트",
com: "실행"
},
{
num: "3.",
name: "제이쿼리",
com: "실행"
}
]
func(info[0].num, info[0].name, info[0].com);
func(info[1].num, info[1].name, info[1].com);
func(info[2].num, info[2].name, info[2].com);
결과보기
16. 함수 유형 : 객체 안에 변수와 함수를 이용한 형태
const info = {
num1: "1.",
name: "함수",
word1: "실행",
num2: "2.",
name2: "자바스크립트",
word2: "실행",
num3: "3.",
name3: "제이쿼리",
word3: "실행",
result1: function () {
document.write(info.num1 + info.name + "가" + info.word1 + "되었습니다16.<br>");
},
result2: function () {
document.write(info.num2 + info.name2 + "가" + info.word2 + "되었습니다16.<br>");
},
result3: function () {
document.write(info.num3 + info.name3 + "가" + info.word3 + "되었습니다16.<br>");
}
}
info.result1();
info.result2();
info.result3();
결과보기
2 자바스트립트가 실행되었습니다.16
3 제이쿼리가 실행되었습니다.16
17. 함수 유형 : 객체 생성자 함수
function func(num, name, word) {
this.num = num;
this.name = name;
this.word = word;
this.result = function () {
document.write(this.num + this.name + "가" + this.word + "되었습니다17.<br>");
}
}
//인스턴스 생성: 다른함수랑 다르다는 걸 알려주기 위해서
const info1 = new func("1", "함수", "실행");
const info2 = new func("2", "자바스크립트", "실행");
const info3 = new func("3", "제이쿼리", "실행");
//실행
info1.result();
info2.result();
info3.result();
결과보기
18. 함수 유형 : 프로토타입 함수
결과보기
19. 함수 유형 : 객체 리터럴 함수 (함수를 객체안에 모아준다.)
function func(num, name, word) {
this.num = num;
this.name = name;
this.word = word;
}
func.prototype = {
result1: function () {
document.write(this.num + this.name + "가" + this.word + "되었습니다19.<br>")
},
result2: function () {
document.write(this.num + this.name + "가" + this.word + "되었습니다19.<br>")
},
result3: function () {
document.write(this.num + this.name + "가" + this.word + "되었습니다19.<br>")
}
}
//인스턴스 생성: 다른함수랑 다르다는 걸 알려주기 위해서
const info1 = new func("1", "함수", "실행");
const info2 = new func("2", "자바스크립트", "실행");
const info3 = new func("3", "제이쿼리", "실행");
//실행
info1.result1();
info2.result2();
info3.result3();
결과보기
20. 즉시 실행 함수
함수를 생성하면 그 함수는 전역 변수로써 남아있게 되고, 많은 변수의 생성은 전역 스코프를 오염시킬 수 있다.
즉시실행함수를 선언하면 내부 변수가 전역으로 저장되지 않기 때문에 전역 스코프의 오염을 줄일 수 있다.
즉시실행함수는 한 번의 실행 이후 없어지기 때문에 단 한번의 사용한 필요한 함수에 사용된다. 대표적인 예시로는 변수를 초기화 하는 함수가 있다.
(function func(){
document.write("함수가 실행되었습니다.20");
}())
결과보기
21. 파라미터 함수
function func() {
document.write(str);
}
func("함수가 실행되었습니다.21");
//
function func(str = "함수가 실행되었습니다.21") {
document.write(str);
}
func()
결과보기
22. 아규먼트 함수
function func(a,b){
document.write(arguments[0]);
document.write(arguments[1]);
}
func("함수가 실행되었습니다.22", "함수가 실행되었습니다.22")
결과보기
23. 재귀함수 함수
funcztion func(num) {
if (num <= 10) {
document.write("함수가 실행되었습니다" + num);
} else {
document.write("함수가 실행되었습니다" + num);
func(num - 1);
}
// func();
}
func(10)
//애니메이션
// function func(){
// document.write("함수가 실행되었습니다");
// requestAnimationFrame(animation);
// }
// animation();)
결과보기
24. 콜백함수 인자값으로 함수를 가져와서 실행시킨다. (첫번째 함수가 실행 -> 두번째 함수가 실행)
function func() {
document.write("함수가 실행되었습니다.1")
}
function callback(str) {
document.write("함수가 실행되었습니다.2")
str();
}
callback(func);
결과보기
25.콜백함수 : 반복문
function func(index) {
document.write("함수가 실행되었습니다.", + index + "<br>")
}
function callback(num) {
for (let i = 1; i <= 10; i++) {
num(i);
}
}
callback(func);
결과보기
26.콜백함수 : 동기/비동기
// function funcA() {
// document.write("funcA가 실행되었습니다. <br>");
// }
// function funcB() {
// document.write("funcB가 실행되었습니다. <br>");
// }
// funcA();
// funcB();
//a
//b
// function funcA() {
// setTimeout(() => {
// console.log("funcA가 실행되었습니다.")
// },1000)
// }
// function funcB() {
// console.log("funcB가 실행되었습니다. <br>")
// }
// funcA();
// funcB();
//b
//a
// function funcA(callBack) {
// setTimeout(() => {
// console.log("funcA가 실행되었습니다.<br>")
// callBack();
// }, 1000);
// }
// function funcB() {
// console.log("funcB가 실행되었습니다.<br>")
// }
// funcA(function() {
// funcB();
// })
// 결과값 a
// 결과값 b
function funcA(callback) {
setTimeout(() => {
console.log("funcA가 실행되었습니다.<br>")
callback();
}, 1000);
}
function funcB(callback) {
setTimeout(() => {
console.log("funcB가 실행되었습니다.<br>")
callback();
}, 1000);
}
function funcC(callback) {
setTimeout(() => {
console.log("funcC가 실행되었습니다.<br>")
callback();
}, 1000);
}
function funcD(callback) {
setTimeout(() => {
console.log("funcD가 실행되었습니다.<br>")
}, 1000);
}
funcA(function () {
funcB(function () {
funcC(function () {
funcD();
});
});
});
결과보기
funcB가 실행되었습니다.
funcC가 실행되었습니다.
funcD가 실행되었습니다.
27. promise 함수
결과보기
28. 내부 함수 : 스코프, 클로져
function func () {
function funcA() {
document.write("함수가 실행되었습니다.")
}
funcA();
function funcB() {
document.write("함수가 실행되었습니다.")
}
funcB();
}
func();
결과보기
29. 클래스
class study {
constructor(num, name, job) {
this.num = num;
this.name = name;
this.job = job;
}
result() {
document.write(this.num + " . 내 이름은 " + this.name + "이며, 직업은 " + this.job + "입니다.<br>")
}
}
const info1 = new study("1", "웹쓰", "웹퍼블리셔");
const info2 = new study("2", "웹스토리보이", "프론트엔드 개발자");
info1.result();
info2.result();
결과보기
30. 클래스 상속
class study {
constructor(num, name, job) {
this.num = num;
this.name = name;
this.job = job;
}
result() {
document.write(this.num + " . 내 이름은 " + this.name + "이며, 직업은 " + this.job + "입니다.<br>")
}
}
class study2 extends study {
constructor(num, name, job, age){
super(num, name, job);
this.age = age;
}
result2() {
document.write(this.num + " . 내 이름은 " + this.name + "이며, 직업은 " + this.job + "이며 나이는" + this.age+ "입니다.<br>")
}
}
const info1 = new study("1", "웹쓰", "웹퍼블리셔");
const info2 = new study2("2", "웹스토리보이", "프론트엔드 개발자", 100);
info1.result();
info2.result2();