✏ 추가 ) 원시값은 변경할 수 없는 값. 재할당하면 값이 바뀌는 것 처럼 보이지만 이는 원시값 변경이 아닌, 값을 저장하고 있는 메모리 공간의 주소
를 변경하는 것
c
와 자바
=> 정수, 실수를 구분해서 int, long, float, double 같은 다양한 숫자 타입 제공✔ 자바스크립트 : 하나의 숫자 타입만 존재, 무한대와 산술 연산 불가도 표현할 수 있다.
=> 모든 수를 실수
로 처리! (정수만 표현하기 위한 데이터 타입이 별도로 존재하지 않는다)
문자열 타입(String)은 텍스트 데이터 나타내는 데 사용
문자열은 작은 따옴표 (''
), 큰 따옴표(""
), 백틱으로 텍스트를 감싼다.
(일반적으론 작은따옴표)
// 문자열 타입
var string;
string = '문자열'; // 작은따옴표
string = "문자열"; // 큰따옴표
string = `문자열`; // 백틱 (ES6)
string = '작은따옴표로 감싼 문자열 내의 "큰따옴표"는 문자열로 인식된다.';
string = "큰따옴표로 감싼 문자열 내의 '작은따옴표'는 문자열로 인식된다.";
✏참고 ) c => 문자열 타입 제공하지 않고 문자의 배열로 문자열 표현
자바 => 문자열을 객체로 표현
자바스크립트 => 문자열이 원시타입! 변경 불가능한 값
(ES6부터 도입된 표기법 template literal
)
💨일반 문자열 내 줄바꿈, 공백 표현하려면 백슬래시() 로 시작하는 이스케이프 시퀀스
사용해야! ex. \n(다음행으로 이동)
템플릿 리터럴
에서는 이스케이프 시퀀스 사용 안해도 줄바꿈 허용var str = 'Hello
world.';
// SyntaxError: Invalid or unexpected token
var template = `Hello
world`;
console.log(template);
// Hello
// world
+
연산자 사용해 연결let first = 'gyeongmi';
let last = 'Lee';
// 문자열 연결
console.log('My name is ' + first + ' ' + last + '.'); // My name is gyeongmi Lee.
// 템플릿 리터럴 표현식 삽입
console.log(`My name is ${first} ${last}.`); // My name is gyeongmi Lee.
// 템플릿 리터럴 표현식 강제 형 변환
console.log(`1 + 2 = ${1 + 2}`); // 1 + 2 = 3
// 일반 문자열로 작성시 그냥 문자로 출력
console.log('1 + 2 = ${1 + 2}'); // 1 + 2 = ${1 + 2}
불리언 타입
(boolean type): 논리적 참 , 거짓을 나타내는 true, falseundefined
가 유일undefined
로 초기화,undefined
가 반환🙋♀️ 변수에 값이 없다는 것을 명시하고 싶어!
=> null
을 할당한다!
null
이 유일 (js는 대소문자 구별한다)null
은 변수에 값이 없다는 것을 의도적으로 명시하고싶을 때 사용! let foo = 'Lee';
console.log(foo);//Lee
// 이전에 할당되어 있던 값에 대한 참조를 제거. foo 변수는 더 이상 'Lee'를 참조하지 않는다.
// 유용해 보이지는 않는다. 변수의 스코프를 좁게 만들어 변수 자체를 재빨리 소멸시키는 편이 낫다.
foo = null;
console.log(foo);//null
❓자바스크립트의 객체 : 프로퍼티(property)들의 집합. 이는 키(key), 값(value)로 구성되어있다.
객체는 데이터를 의미하는 프로퍼티(property)와 데이터를 참조하고 조작할 수 있는 동작을 의미하는 메소드로 구성된 집합
// 심벌 값 생성
var key = Symbol('key');
console.log(typeof key); // symbol
// 객체 생성
var obj = {};
obj[key] = 'value';
console.log(obj[key]); // value
let circle = {
radius : 5, //property
//radius = "키" , 5 = "값"
//원의 지름(diameter)
getDiameter: function(){
return 2 * this.radius; //this는 circle을 가리킨다.
} // function(){} => 프로퍼티 값이 함수일 경우 일반 함수와 구분 위해 method라고 부른다.
};
console.log(circle.getDiameter()); //10
프로퍼티
의 집합이므로 자바스크립트에서 사용할 수 있는 모든 값은 프로퍼티 값으로 사용가능하다.(물론 메서드 포함~)메모리 공간의 크기
를 결정하기 위해메모리 공간의 크기
를 결정하기 위해2진수를 어떻게 해석할지
결정하기 위해-정적타입언어
(C, 자바, C++,코틀린, 고 등) : 변수 선언할 때 변수에 할당할 수 있는 값의 종류(데이터) 타입을 사전에 선언해야! => 명시적 타입 선언
// c 변수에는 1바이트 정수 타입의 값(-128 ~ 127)만을 할당할 수 있다.
char c;
// num 변수에는 4바이트 정수 타입의 값(-2,124,483,648 ~ 2,124,483,647)만을 할당할 수 있다.
int num;
정적타입언어
는 컴파일 시점에 타입체크
를 수행 => 만약 타입 체크 통과하지 못하면 에러 발생시키고 컴파일 안된다.-- 동적 타입 언어
(자바스크립트, 파이썬, PHP, 루비, 리스프, 펄)
선언
이 아닌 할당
에 의해 타입이 결정(= 타입 추론)변수 사용시 주의사항
✅ 가독성이 좋은 코드가 좋은 코드이다!