참고
변수
NOTE
// 한줄 주석입니다.
/*
여러줄
주석
입니다.
*/
// 변수
var myName;
var myVariable;
// 적절
var listCount = 10;
var userName = "안효인";
var selected = false;
// 부적절 - 변수인지 함수인지 구별이 어렵다.
var getListCount = 10;
var isSelected = false;
JavaScript
복사
•
변수를 선언할 때 타입을 명시하지 않고 var keyword 사용
•
동적타입언어 → 변수의 타입 지정없이 값이 할당되는 과정에서 자동으로 변수타입 결정됨
기본자료형(primitive type), 숫자
NOTE
// 변수
var myName;
var myVariable;
// 적절 - 명사만 사용
var listCount = 10;
var userName = "안효인";
var selected = false;
// 부적절 - 동사 사용으로, 변수인지 함수인지 구별이 어렵다.
var getListCount = 10;
var isSelected = false;
JavaScript
복사
primitive type
•
JavaScript는 숫자를 정수와 실수로 나누어 구분하지 않는다
◦
모든 숫자를 8Byte의 실수 형태로 처리한다 → 정수만을 표현하기 위한 데이터 타입 없음
◦
편의성을 위해 정수 리터럴과 실수 리터럴 제공
◦
숫자의 연산 처리시 실수 형태로 하기 때문에 특정 소수점을 정확하게 표현못함
console.log(0 / 100); // 0
console.log(-0 / 100); // -0
// 오버플로우
console.log(100 / 0); // Infinity
console.log(-100 / 0); // -Infinity
console.log(Infinity / 0); // Infinity
console.log(-Infinity / 0); // -Infinity
console.log(0 / 0); // Nan
console.log(parseInt('3A')); // 3
console.log(parseInt('A1')); // NaN
console.log(new Number('1')); // 1
console.log(new Number('1A')); // NaN
JavaScript
복사
•
JavaScript는 언더플로우, 오버플로우, 0으로 나누는 연산에 대해 예외를 발생시키지 않음
◦
Infinity : 무한대를 나타냄 ( 어떤 수를 0으로 나누거나, Infinity를 사칙연산 한 결과
◦
NaN(Not a Number) : 계산식의 결과가 숫자가 아님을 나타낸다.
문자열, boolean과 null과 undefined
NOTE
console.log('큰따옴표 문자열'); // 큰따옴표 문자열
console.log('작은따옴표 문자열'); // 작은따옴표 문자열
console.log('3.14'); // 3.14
console.log("문자열 안에 포함된 '작은따옴표' 표현"); // 문자열 안에 포함된 '작은따옴표' 표현
console.log('특수문자 사용\n줄바꿈 했다.'); // 특수문자 사용
// 줄바꿈 했다.
var str = '안효인';
console.log(`당신의 이름은 ${str}입니다.`);
JavaScript
복사
null vs undefined
var name;
var id = null;
var n1 = 10;
var n2 = 20;
console.log(n1 == n2); // false
console.log(name); // undefined
console.log(id); // null
var a;
var b = null;
var c = 0;
if (!a) {
console.log("a"); // a
}
if (!b) {
console.log("b"); // b
}
if (!c) {
console.log("c"); // c
}
JavaScript
복사
의미는 비슷하지만 값을 할당 하지 않은 변수는 undefined , undefined가 할당되고(시스템레벨), 코드에서 명시적으로 값이 없음을 나타낼 때 null 사용한다.
호이스팅
NOTE
•
var 키워드를 사용한 변수는 중복해서 선언이 가능하다
•
호이스팅
◦
var 선언문이나 function 선언문 등 모든 선언문이 해당 Scope의 처음으로 옮겨진 것처럼 동작한다
•
변수의 생성
◦
선언 단계 : 변수 객체에 변수를 등록
◦
초기화 단계 : 변수 객체에 등록된 변수를 메모리에 할당. undefined로 초기화됨
◦
할당 단계 : undefined로 초기화된 변수에 실제 값을 할당
let 키워드, const 키워드
NOTE
•
ECMA6에서 새롭게 등장했으며 var과 달리 호이스팅 되지 않음
•
const
◦
재선언 불가능
◦
상수
•
let
◦
변수 선언에만 쓰이고, 각 변수는 한 번만 선언할수 있음
◦
값을 할당하지 않으면 undefined로 지정됨
데이터 변환
NOTE
const numStr = "33.3"
const num = Number(numStr);
// Number 객체의 인스턴스가 아님
// 숫자로 바꿀 수 없는 문자열은 NaN이 나옴
// 내장함수 parseInt, parseFloat함수도 존재
JavaScript
복사
숫자변환
const n = 33.5;
const s = n.toString();
JavaScript
복사
문자열 변환