강의보면서 모르는 내용 위주로 정리합니다.
TIP!!
모든 변수는 const로 선언하고 나중에 바뀔 값만 let으로 바꾼다.
확인 버튼만 있다.
사용자로부터 입력을 받는다.
입력값이 없을 경우를 대비해 기본값을 제공할 수 있다.
//구문
prompt(message, default);
//예시
let sign = prompt("당신의 별자리는 무엇입니까?","전갈자리");
// 실행하면 메세지가 출력되면서 사용자의 입력을 받고,
// 만약 사용자가 입력하지 않으면 기본값인 '전갈자리'가 출력된다.
취소/확인 버튼이 있다.
취소를 누르면 false 값이, 확인을 누르면 true 값이 반환됨.
숫자형이 아닌 자료도 나누기 같은 연산은 숫자로 자동 형 변환하여 계산된다. (자동 형변환)
자동 형변환은 오류를 발생시킬 수 있으므로 항상 의도를 갖고 형 변환을 해주어야 한다. (명시적 형변환)
String()
: 문자형으로 변환Number()
: 숫자형으로 변환매개변수로 받은 값은 복사된 후 함수의 지역변수가 된다.
let name = 'Mike';
function sayHello(name) {
console.log(name);
}
sayHello(); //undefined
sayHello('Jane'); //"Jane"
💡 전체 서비스에서 쓰이는 값을 제외하고는 지역변수로 작성하는 습관을 들이는 것이 좋다.
객체 프로퍼티로 할당된 함수 (메소드도 함수이다.)
const user = {
name : 'Mike',
age : 30,
sayHello : function () {
console.log('Hello~')
}
}
: function
을 생략해서 사용할 수 있다. (쓰임은 같음)sayHello() {
console.log('Hello~')
}
this는 항상 함수가 호출될 때 결정된다.
메소드 내부에서 this를 작성하면 this는 메소드를 부른 객체를 가르킨다. (this = 객체.메소드
에서의 객체
)
let boy = {
name : 'Mike',
sayThis : function() {
console.log(this); //여기서 this가 가르키는건 해당 메소드를 누가 호출하는지에 따라 달라짐
console.log(this.name);
}
}
boy.sayThis(); //sayThis라는 메소드를 호출한게 boy 객체이므로 이 메소드에 쓰인 this가 가르키는건 boy 객체이다.
//따라서, this를 출력하면 boy 객체 자체가 출력되고
//this.name = boy.name이므로 Mike가 출력된다.
let boy = {
name : 'Mike',
sayThis : () => {
console.log(this);
}
}
boy.sayThis(); //window 객체 출력
💡 객체의 메소드를 작성할 때는 화살표 함수로 작성하지 않는 것이 좋다!!!
let days = ['월', '화', '수']
days.pop()
console.log(days) // ['월', '화']
let days = ['월', '화', '수']
days.push('목')
console.log(days) // ['월', '화', '수', '목']
days.push('금', '토')
console.log(days) // ['월', '화', '수', '목', '금', '토']
let days = ['월', '화', '수']
days.unshift('일')
console.log(days) // ['일', '월', '화', '수']
days.shift()
console.log(days) // ['월', '화', '수']
push
와 unshift
는 한번에 여러 요소를 추가할 수 있다.