함수 선언문 방식
function printName() {
code//
}
함수 표현식 방식=>네이밍 함수
const printName = function printName() {
code//
}
함수 표현식 방식 => 익명 함수
const printName = function () {
code//
}
function gugudan(param1,parm2,...,paramN)=>전달된 인수를 매개변수 {
//code
}
gugudan(arg1,arg2,...,argN) =>여러개 인수를 가진다.
function gugudan(dan) {
for(i=1;i<9;i++) {
console.log(`${dan}*${i}=${dan*i}`);
}
}
gugudan(3)
const printIntroduce = function(name,age) {
console.log(`안녕하세요, 저는 ${name}이고, ${age}입니다.`)
}
printIntroduce('철수','19');
가변 인자 함수
function sum(num1, num2) {
console.log(num1+num2);
}
sum(10,20) =>30
function sum() {
console.log(arguments);
}
sum(10,20) => [Arguments] { '0': 10, '1': 20 }
// 가변인자 함수라는 것을 지원한다. 가변인자 =매개 변수가 변할 수 있는..=> 함수 내부에 보이지 않는, arguments를 사용하면 된다. =>객체 리터럴 형태를 가지고 있다.
//배열의 특성도 가지고 있다.(유사 배열 객체)
function sum() {
let result =0;
for(let value of arguments) {
result =result+value;
}
console.log(result);
}
sum(10,20,30);=> 60이 출력 되게 된다.
function sum(...args) { //... 은 spread 연산자이다.
console.log(args)
}
sum(10,20); //[10,20] => 배열로 나오게 된다.
function sum(...args) { //... 은 spread 연산자이다.
let result = 0;
for(let value of args) {
result =value+ result;
}
console.log(result);
}
sum(10,20,30) =>60
function sum(num1,...args) { //... 은 spread 연산자이다. num1=10이 할당 되고, 나머지는 args로 간다.
console.log(num1) //10
console.log(args) //[20,30]
}
sum(10,20,30)
return
function sum(num1, num2) {
const result = num1 + num2 ;
console.log(result)
}
sum(10,20)
// console.log(result) => 외부로 반환이 안됨, return이 필요
function sum(num1, num2) {
const result = num1 + num2 ;
console.log(result)
return result;
}
const result= sum(10,20)
console.log(result) => 함수 내부 result랑 외부 result는 서로 다르다.
객체 리터럴
어떠한 형태라도 사용이 가능하다.
{
key: function() => 메서드라고 부른다.
}
const person = {
name: '철수',
introduce :function() { //=>함수를 가지고 있으면, 메서드라고 부른다.
//person 객체에 introduce 메서드를 호출한다라고 표현하는 것이 옳바르다.
console.log(`제 이름은 ${person.name}입니다.`);
}
}
person.introduce()
const person = {
name: '철수',
introduce :function() { //=>함수를 가지고 있으면, 메서드라고 부른다.
//person 객체에 introduce 메서드를 호출한다라고 표현하는 것이 옳바르다.
console.log(`제 이름은 ${this.name}입니다.`);
}
}
person.introduce() => 값은 동일하게 나온다.
this는 메서드 안에서, 자기 자신이 속해있는 객체를 가리키게 된다.
화살표 함수
// const sum =function sum2(a,b) { //네이밍 함수를 제거해주기(sum2)
// }
//화살표 함수
const sum = (a,b) => {
}
function sum(num1,num2) {
return num1 + num2;
}
// => 변경하는 방법
// function 키워드 제거하고,
// sum(num1,num2) => {}
// 여기서 sum은 필요가 없으므로 지워주고,
// 변수가 필요하므로, 변수를 하나 만들어주면 된다.
const sum2 = (num1,num2) => {
return num1+num2;
}
const pow =(num) => {
return num*num;
}
//매개변수가 한개인 경우에는, ()를 생략할 수 있다.
const pow =num => {
return num*num;
}
//2. 만약에 중괄호 안에 있는 코드가 1줄이라면, 중괄호와 return을 생략할 수 있다.
const pow =num => num*num;
3.
const sum =(...a) => {
console.log(a);
}
sum(10,20);
//화살표 함수로 가변인자 함수를 만드는 것은 불가능 하며,
//spread 연산자를 만들어서 사용하는 것은 가능하다.
4. 화살표 함수는 this 키워드를 사용할 수 없다. => undefined가 반환된다.