함수

?·2023년 2월 15일

함수 선언문 방식

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가 반환된다. 
profile
살려줘

0개의 댓글