본문 바로가기
Javascript/GMA(2302~)

23.04.25 자바스크립트 함수,객체,변수 심화내용

by hyerin1201 2023. 4. 26.

함수의 매개변수(인자값)의 기본값 설정하기

 
   매개변수 인자값, 기본값 설정
 
   function hello(name, message = "안녕하세요") { //매개변수의 기본값 설정하기
   console.log(`${name}님, ${message}.`)
   };
 
   hello("홍길동", "안녕하세요");
   hello("홍길동");
 

함수를 호출할때 매개변수를 한개만 주어도 기본값을 설정해놓는다면, 기본값이 출력된다.


*전개연산자의 사용법

전개연산자는 여러군데에 사용이 될 수 있다

 
   1. 나머지 매개변수
   2. 배열합치기
   3. 배열객체 데이터 복사할떄
   4. 구조 분해 할당할때
 
 
   1. 나머지 매개변수
 
   function addNum(...numbers) { //매개변수의 갯수에 상관없이 실행된다.
   let sum = 0;

   for(let el of numbers) {
   sum += el;
   }
   return sum;
   }
   console.log(addNum(1,2,3))
 

위와 같은 상황에서는 함수를 호출할때, 매개변수를 몇개를 넣어도 상관 없이 함수가 변수를 받아 실행된다.

 

 
   2. 배열합치기
   const animal = ["bird", "cat"];
   const fruits = ["apple", "banana", "cherry"];

   //let total = animal.concat(fruits);  //concat( ) 함수를 이용하여 배열을 합칠 수 있으나,
   let total = [...animal, ...fruits];  //전개 연산자도 사용이 가능하다
   console.log(total)
   ["bird", "cat","apple", "banana", "cherry"]
 

 

 

 
   3. 배열객체 데이터 복사할때
   const fruits = ["apple", "banana", "cherry"];
   const favorite = fruits;

   favorite[1] = "grape"
   console.log(favorite)
   ["apple", "grape", "cherry"]
   console.log(fruits)
   ["apple", "grape", "cherry"]
   //배열객체도 객체이다. 원시유형 자료전달이 아닌 (변수만 가능) 참조주소전달임으로, 원본 데이터까지 변경됨.

   //방지하고 싶다면 전개연산자 사용.(-> mine배열 사용)
   const mine = [...fruits];
   console.log(mine)
   ["apple", "banana", "cherry"]
 
   mine[1] = "orange"
   console.log(mine)
   ["apple", "orange", "cherry"]
    console.log(favorite)
   ["apple","banana", "cherry"]
 

*주의 배열객체도 객체임으로 원본데이터를 복사하여 사용할 경우 원본 데이터도 함께 변경된다.

이를 방지하고자 할때 전개연산자를 사용하여 데이터를 복사해오면 된다.

 


객체의 Symbol( )

 
   객체의 Symbol : 차별화된 객체의 값을 저장하고자 사용
   let num1 = Symbol( );
   let num2 = Symbol( );
   num1==num2
   false // Symbol( ) 은 각각 다르므로 false 값 
 

   let id = Symbol( );
   const member = {
   name : "kim",
   [id] : 12345
   }
 
   member
   {name: 'kim', Symbol( ) : 12345}
   member.id = 6789;
 
   member;
   {name: 'kim', id: 6789, Symbol( ): 12345}

   let grade = Symbol("grade");
   member[grade] = "vip";
 
   member;
   {name: 'kim', id: 6789, Symbol( ): 12345, Symbol(grade): 'vip'}

구조 분해 할당

 
   구조 분해 할당 : 주어진 자료의 구조를분해해서 변수에 할당하는 기능
 
   const fruits = ["사과", "복숭아"];
   let apple = fruits[0];
   let peach = fruits[1];
   apple
   '사과'
   peach
   '복숭아'

   let [apple, peach] = ["사과", "복숭아"];
   apple
   '사과'
   peach
  '복숭아'

   const fruits = ["사과", "복숭아"];
   let [apple, peach] = fruits;
   apple
   '사과'
   peach
   '복숭아'

   let [spring,  ,fall,  ] = ["봄", "여름", "가을", "겨울"]
   spring
   '봄'
   fall
   '가을'

   //전개연산자도 사용가능
   let [teach, ...student] = ["kim", "lee", "park", "choi"];
   teach;
   'kim'
   student;
   (3) ['lee', 'park', 'choi']
 
   //변수값 교환방법
   let x = 10;
   let y = 20;
   [x, y] = [y, x];
   x
   20
   y
   10