JS 객체의 프로퍼티 값이 함수일 경우, 일반 함수와 구분하기 위해 메소드라 부름
자바스크립트는 2진수, 8진수, 16진수 데이터 타입을 제공하지 않기 때문에 이들 값을 참조하면 모두 10진수로 해석
var binary = 0b01000001; // 2진수
var octal = 0o101; // 8진수
console.log(binary); // 65
console.log(octal); // 65
// 표기법만 다를뿐 같은 값이다.
console.log(binary === octal); // true
자바스크립트의 숫자 타입은 정수만을 위한 타입이 없고 모든 수를 실수 처리
정수로 표시된다해도 사실은 실수
console.log(1 === 1.0); // true
Infinity : 양의 무한대
-Infinity : 음의 무한대
NaN : 산술 연산 불가(not-a-number)
var nan = 1 * 'string'; // 산술 연산 불가
console.log(nan); // NaN
문자열의 가장 일반적인 표기법은 작은 따옴표('')를 사용하는 것
자바스크립트의 문자열은 원시 타입이며 변경 불가능=한 번 문자열이 생성되면, 그 문자열을 변경할 수 없다는 것을 의미
다른 문자열 할당 시, 변경되는 것이 아니라 가리키는 메모리가 달라지는 것
문자열은 배열처럼 인덱스를 통해 접근 가능(유사 배열)
문자열은 read only로서 변경 불가능
비어있는 문자열과 null, undefined, 숫자 0은 false로 간주
선언은 되었지만 값을 할당하지 않은 변수에 접근하거나 존재하지 않는 객체 프로퍼티에 접근할 경우 undefined가 반환
개발자가 마음대로 할당한다면 undefined의 본래의 취지와 어긋나므로, 변수의 값이 없다는 것을 명시하고 싶은 경우 undefined를 할당하는 것이 아니라 null을 할당
변수명 명명 규칙
-영문자(특수문자 제외, 대/소문자를 구별), underscore(_), 또는 달러 기호($)로 시작
-이어지는 문자에는 숫자(0~9)도 사용
-변수를 선언할 때는 var 키워드를 사용
자바스크립트의 특징 - 모든 선언문은 호이스팅되기 때문에 선언되기 이전에 참조 가능
호이스팅 - var 선언문이나 function 선언문 등 모든 선언문이 해당 Scope의 선두로 옮겨진 것처럼 동작하는 특성
함수 레벨 스코프 - 함수 내에서 선언된 변수는 함수 내에서만 유효하며 함수 외부에서는 참조 불가능
즉, 함수 내부에서 선언한 변수는 지역 변수이며 함수 외부에서 선언한 변수는 모두 전역 변수
블록 레벨 스코프 - 코드 블록 내에서 선언된 변수는 코드 블록 내에서만 유효하며 코드 블록 외부에서는 참조 불가능
var 키워드로 선언된 변수의 문제점
-for loop 초기화식에서 사용한 변수를 for loop 외부 또는 전역에서 참조 가능
-var 키워드 생략 허용으로 의도하지 않은 변수의 전역화
-중복 선언 허용으로 의도하지 않은 변수값 변경
-변수 호이스팅으로 변수를 선언하기 전에 참조가 가능
=>var의 단점을 보완하기 위해 let과 const 키워드를 도입
전역 변수는 유효 범위가 넓어서 어디에서 어떻게 사용될 지 파악하기 힘들기 때문에 불가피한 상황을 제외하고 사용을 억제
변수의 유효 범위는 좁을수록 좋음
동등 비교 연산자는 편리한 경우도 있지만 수많은 부작용을 일으키므로 사용하지 않는 편이 좋음
// 동등 비교
5 == 5 // true
일치 비교 연산자(===, 좌항과 우항의 피연산자가 타입도 같고 값도 같은 경우)를 사용 권장
NaN은 자신과 일치하지 않는 유일한 값
자가 NaN인지 조사하려면 빌트인 함수 isNaN을 사용
NaN === NaN // false
isNaN(NaN) // true