- 명시적 함수는 함수이름이 있다. hoisting을 통해 변수 선언과 함수가 미리 맨 위로 올라간다.(메모리 상에 먼저 할당 됨, let과 const는 temporal deadzone이라는 것이 적용돼 초기화하기 전까지는 접근할 수 없는 상태가 된다.)
- 익명 함수는 함수이름이 없다. var 변수에 넣더라도 초기화는 미리 되지 않기 때문에 명시적 함수를 선언하는 것과 다르게 hoisting되지 않는다.
function 작성 시에 매개변수를 자동으로 생성하는 하나의 객체. JavaScript에서는 함수 매개변수 선언을 하지 않더라도 자동적으로 함수 자신을 가리키는 this와 arguments라는 매개변수 객체가 생성된다. 그래서 매개변수 없이 선언된 function에 매개변수를 받을 수 있다. 심지어 function안에서 arguments 객체를 이용해 조작도 가능하다.
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 ]
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>");
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)
기존 배열 변경. 맨 처음에 들어간 값이 나온다.(Queue)
기존 배열 변경. array의 index를 거꾸로 바꾼다.
기존 배열 변경하지 않음. array1.concat(array2) -> array1뒤에 array2를 붙여 return.
기존 배열 변경. ascending sort를 한다.
기존 배열 변경. 맨 뒤에 값을 넣는다.(Stack)
array.indexOf(element) -> 해당 element가 array안에 있으면 index값을, 없으면 -1을 출력한다.
저도 개발자인데 같이 교류 많이 해봐요 ㅎㅎ! 서로 화이팅합시다!