| 구분 | JavaScript | Java |
|---|---|---|
| 객체 지향 방식 | 프로토타입 기반 상속, 객체에 동적 속성/메서드 추가 가능 | 클래스 기반 상속, 동적 속성/메서드 추가 불가 |
| 변수 자료형 | 동적 타입, 느슨한 형 지정 | 정적 타입, 강한 형 지정 |
| 디스크 접근 | 직접 작성 불가 | 직접 작성 가능 |
cmd + opt + k (Mac)eval()과 동일
(1) 대소문자 구별 & 유니코드 문자셋 지원
let myVar = 10;
let myvar = 20;
console.log(myVar); // 10
console.log(myvar); // 20 (대소문자 다르므로 별개 변수)
(2) 명령 = 명령문(statement), 세미콜론(;)으로 구분
// 한 줄 주석
/* 여러 줄 주석 */
/* 그러나, /* 중첩된 주석은 불가 */ SyntaxError */
| 키워드 | 스코프 | 재선언 | 재할당 | 특징 |
|---|---|---|---|---|
| var | 함수 스코프 | 가능 | 가능 | 오래된 방식, 호이스팅 시 undefined로 초기화 |
| let | 블록 스코프 | 불가 | 가능 | 값 변경 가능, TDZ 존재 |
| const | 블록 스코프 | 불가 | 불가 | 읽기 전용 상수, 반드시 초기화 필요 |
const 사용이 선호됨객체나 배열에서 값을 꺼내 변수로 선언 가능
let foo = { bar: 10, baz: 20 };
let { bar } = foo; // bar = 10
undefinedSyntaxErrorReferenceError📌 값의 동작
undefined: 불리언 → false, 수치 → NaNnull: 불리언 → false, 수치 → 0var → undefined로 초기화let/const → TDZ(Temporal Dead Zone) 때문에 선언 전 접근 시 ReferenceErrorwindow)의 속성window.variable 형태로 접근 가능parent.variable로 가능const)const MY_OBJECT = { key: "value" };
MY_OBJECT.key = "otherValue"; // ✅ 가능
const MY_ARRAY = ["HTML", "CSS"];
MY_ARRAY.push("JS"); // ✅ 가능
| 구분 | 정의 | 특징 | 예시 |
|---|---|---|---|
| 원시 타입 (Primitive, 7개) | 더 이상 쪼갤 수 없는 단일 값 | - 불변(immutable) - 값 전달(pass-by-value) - 오토 박싱(auto-boxing) 일시적 래퍼 객체 | Boolean, null, undefined, Number, BigInt, String, Symbol |
| 객체 타입 (Object, 1개) | 키-값 쌍과 메서드를 담는 참조형 데이터 | - 가변(mutable) - 참조 전달(reference) - 여러 변수가 같은 객체 공유 | {}, [], function, Date, RegExp, Map, Set |
parseInt("101", 2); // 5
+'1.1' + +'1.1'; // 2.2
let arr = [1,2,3];let obj = {a:1, b:2};/ab+c/;"foo", 'bar', `Hello ${name}`