JAVASCRIPT function, arguments, array (230717)

이원건·2023년 7월 17일
0

JAVASCRIPT

목록 보기
2/6
post-thumbnail

1. 명시적 함수와 익명 함수의 차이점은?

  • 명시적 함수는 함수이름이 있다. hoisting을 통해 변수 선언과 함수가 미리 맨 위로 올라간다.(메모리 상에 먼저 할당 됨, let과 const는 temporal deadzone이라는 것이 적용돼 초기화하기 전까지는 접근할 수 없는 상태가 된다.)
  • 익명 함수는 함수이름이 없다. var 변수에 넣더라도 초기화는 미리 되지 않기 때문에 명시적 함수를 선언하는 것과 다르게 hoisting되지 않는다.

2. arguments에 대하여 설명하시오.

function 작성 시에 매개변수를 자동으로 생성하는 하나의 객체. JavaScript에서는 함수 매개변수 선언을 하지 않더라도 자동적으로 함수 자신을 가리키는 this와 arguments라는 매개변수 객체가 생성된다. 그래서 매개변수 없이 선언된 function에 매개변수를 받을 수 있다. 심지어 function안에서 arguments 객체를 이용해 조작도 가능하다.


3. 로또를 짜시오.(배열 함수를 할용 할것) - push, indexof 등등

  • 코드
let lotto = [];
while(1){
  if(lotto.length >= 6) break;
  let num = parseInt(Math.random()*45 + 1);
  if(lotto.indexOf(num) < 0)
    lotto.push(num);
}
console.log(lotto.sort((a, b)=>a-b);
  • 실행 결과
//3회 실행 결과
Array(6) [ 2, 6, 16, 20, 26, 30 ]
Array(6) [ 3, 8, 10, 30, 32, 42 ]
Array(6) [ 4, 23, 30, 38, 40, 45 ]

4. 성적표를 짜시오.(배열을 활용 할것)

  • 코드
 let scoreSub = ["국어", "영어", "수학"];

 for(let num in scoreSub){
   scoreSub[num] = prompt(scoreSub[num]+"점수를 입력하세요");
 }

 function getAvg(scoreSub){
   let sum = 0;
   for(let i =0;i<scoreSub.length;i++){
     sum += Number(scoreSub[i]);
   }
   return sum / scoreSub.length;
 }

 function getGrade(avg){
   let grade = '가';

   if(avg >=90){
     grade='수';
   } else if(avg>=80){
     grade='우';
   } else if(avg>=70){
     grade='미';
   } else if(avg>=60){
     grade='양';
   } else {
     grade='가';
   }
   return grade;
 }
 let sum =0;
 for(let n in scoreSub)
   sum += Number(scoreSub[n]);

 document.write("성적 총점 : " + sum + "<br>");
 document.write("성적 평균 : " + getAvg(scoreSub)+"<br>");
 document.write("성적 등급 : " + getGrade(getAvg(scoreSub))+"<br>");

5. 아래의 배열 함수에 대하여 설명하시오.

  • join

array.join("|"); -> array에 있는 모든 원소를 연결해 deliment를 |로 준다. default값 comma

  • ex)

    let array=[1, 2, 3, "grade", "score"];
    console.log(array.join(" | "));
  • 결과

    1 | 2 | 3 | grade | score
  • pop

기존 배열 변경. 맨 마지막에 들어간 값이 나온다.(Stack)

  • shift

기존 배열 변경. 맨 처음에 들어간 값이 나온다.(Queue)

  • reverse

기존 배열 변경. array의 index를 거꾸로 바꾼다.

  • concat

기존 배열 변경하지 않음. array1.concat(array2) -> array1뒤에 array2를 붙여 return.

  • sort

기존 배열 변경. ascending sort를 한다.

  • push

기존 배열 변경. 맨 뒤에 값을 넣는다.(Stack)

  • indexOf

array.indexOf(element) -> 해당 element가 array안에 있으면 index값을, 없으면 -1을 출력한다.


1개의 댓글

comment-user-thumbnail
2023년 7월 17일

저도 개발자인데 같이 교류 많이 해봐요 ㅎㅎ! 서로 화이팅합시다!

답글 달기