Javascript 기초 문법 정리
javascript 기초 문법
자료형 확인
typeof 변수명또는값
또는
typeof(변수명또는값)
Javascript 객체 또는 값의 자료형을 확인할 수 있는 단항 연산자입니다.
변수 값 비교
// 변수 값 자동 형변환 후 비교
// 타입이 달라도 값이 같으면 true
if (변수명1 == 변수명2)
// 변수 값 자동 형변환 없이 비교
// 타입, 값이 모두 같아야 true
if (변수명1 === 변수명2)
Javascript ==, === 연산자는 프리미티브 타입 비교 시에만 사용하는 것이 좋습니다.
배열 및 객체 타입 비교 시에는 값이 아니라 참조 주소를 비교하므로, 값이 같아도 다른 객체를 비교하면 false가 됩니다.
javascript 반복문
for 반복문
for (let i = 0; i < list.length; i++) {
const obj = list[i];
}
인덱스 값을 사용하여 배열의 요소 값을 얻을 수 있습니다.
for…in 반복문
const obj = { a: 1, b: 2, c: 3 };
for (let key in obj) {
console.log(key); // "a", "b", "c"
console.log(obj[key]); // 1, 2, 3
}
순서가 보장되지 않으며, 키 문자열로 반복하여 객체의 속성을 열거할 때 주로 사용합니다.
for…of 반복문
const arr = [1, 2, 3];
for (let value of arr) {
console.log(value); // 1, 2, 3
}
순서가 보장되며, 반복 가능한 객체의 값을 직접 처리할 때 사용합니다.
for 반복문이나 forEach 메서드와 달리, 인덱스 값을 얻을 수 없다는 단점이 있습니다.
javascript 날짜 계산
년, 월의 마지막 일자 계산
function getLastDay(year, month) {
// 다음 달의 이전 날로 설정 (month는 0부터 시작)
let date = new Date(year, month, 0);
// 마지막 일자 반환
return date.getDate();
}
2024~2025년 달력 기준으로 테스트 완료하였습니다.
Javascript 구조분해 할당
구조분해 할당 시 별칭 설정
const { data: posts } = 함수명();
함수에서 return 한 data 속성 값을 새 변수 posts에 할당합니다.
data 변수는 사용할 수 없고, posts 변수가 정의되는 것입니다.
Vue 상태 값에 구조분해 할당
const loading = ref(false);
const error = ref(null);
({ error: error.value, loading: loading.value } = 함수명(파라미터));
Vue 반응형 변수 값으로 구조분해 할당하는 예시입니다.
하지만 위와 같은 방식은 반응형 상태를 유지할 수 없어 권장되지 않습니다.
아래처럼 명시적으로 대입하는 방식이 반응성을 유지해서 권장됩니다.
const loading = ref(false);
const error = ref(null);
const result = 함수명(파라미터);
loading.value = result.loading;
error.value = result.error;
구조분해 할당 시 기본값 설정
export const 함수명 = (data = {}) => {
// 항수 로직
}
위와 같이, 함수 모듈에서 파라미터를 받을 때 값이 없으면 기본값을 할당할 수 있습니다.
Javascript 전개 구문
객체 및 배열 복사
const obj = { a: 1, b: 2 };
const newObj = {
...obj,
b: 9,
c: 3
};
javascript 전개구문으로 객체 및 배열 속성들을 펼쳐 복사하거나 병합할 수 있습니다.
객체 속성 키가 같은 경우, 뒤에 추가된 속성 값으로 덮어쓰기 됩니다.
Javascript 페이지 열기
새 탭으로 열기
<a onclick="openNewTabPage()">버튼명</a>
<script>
function openNewTabPage() {
window.open('http://URL', '_blank');
}
</script>
target 속성 _blank 값으로 새 탭에서 페이지를 열 수 있습니다.
아래와 같이, HTML만으로도 새 탭 열기가 가능합니다.
<a href="http://URL" target="_blank">버튼명</a>
새 창 팝업으로 열기
<a class="btn btn-primary fs-5" @click="openPopup('http://URL')">선생님 로그인</a>
<script>
function openPopup(url, popupName) {
// 현재 사용자 화면 크기로 팝업 창 최대 크기 계산
const width = window.screen.availWidth;
const height = window.screen.availHeight;
// 팝업 크기 및 위치 설정
const features = `width=${width},height=${height},top=0,left=0,scrollbars=yes,resizable=yes`;
// 팝업 창 열기
window.open(url, popupName, features);
}
</script>
현재 사용자 브라우저 크기로 계산해서 전체화면 팝업을 띄우는 예시입니다.
window.open 2번째 파라미터는 팝업창 고유 이름으로, 같은 이름 팝업이 뜨면 기존 팝업에 덮어씌워집니다.
Javascript 클래스
Javascript 클래스 생성
class 클래스명 {
필드명1;
필드명2;
필드명3;
// 생성자
constructor(필드명1, 필드명2, 필드명3) {
this.필드명1 = 필드명1;
this.필드명2 = 필드명2;
this.필드명3 = 필드명3;
}
메서드명(파라미터명1) {
console.log(`현재 객체 필드1 값 : ${this.필드명1}`);
}
}
Javascript class 문법을 이용하여 클래스를 정의할 수 있습니다.
Javascript 클래스 상속 방법
class 부모클래스명 {
필드명1;
필드명2;
필드명3;
// 생성자
constructor(필드명1, 필드명2, 필드명3) {
this.필드명1 = 필드명1;
this.필드명2 = 필드명2;
this.필드명3 = 필드명3;
}
메서드명(파라미터명1) {
console.log(`현재 객체 필드1 값 : ${this.필드명1}`);
}
}
class 자식클래스명 extends 부모클래스명 {
필드명4;
constructor(필드명1, 필드명2, 필드명3, 필드명4) {
super(필드명1, 필드명2, 필드명3); // 부모 클래스 생성자 호출
this.필드명4 = 필드명4;
}
}
부모 클래스 필드 및 메서드를 모두 상속받는 자식 클래스를 정의할 수 있습니다.
Javascript 객체 생성
let 객체명 = new 클래스명(필드1값, 필드2값, 필드3값);
// 클래스 내 메서드 호출 가능
객체명.메서드명(파라미터1값);
// 객체 정보 확인
console.log(객체명);
정의한 클래스 생성자를 이용하여 객체 인스턴스를 생성할 수 있습니다.