Variable

MINIMI·2023년 2월 6일

JavaScript(Core : 기본)

목록 보기
1/10
post-thumbnail

1-1. Data Type

1) numbers

  • 데이터 타입을 지정하지 않고 변수라는 의미의 var 사용

2) String

  • 작은 따옴표 / 큰 따옴표 / 백틱
  • 템플릿 리터럴
    • ES6부터 도입 된 멀티라인 문자열, 표현식 삽입 등 편리한 문자열 처리 기능을 제공하는 문자열 표기법
  • 일반 문자열 내에서는 줄바꿈이 허용되지 않음
    • 백틱을 사용하면 줄바꿈 허용. 모든 공백 적용.
     var multiline = `안녕하세요.
     반갑습니다.
     제 이름은 홍길동입니다.`;
  • 문자열 연산자 '+'를 사용해서 연결
  • 표현식 삽입(백틱)을 이용하면 문자열 연산자보다 가독성 좋고 간편하게 문자를 조합할 수 있다.
    var lastName = '홍';
    var firstName = '길동';
    console.log(`제 이름은 #{lastName}#{firstName} 입니다.`); 

3) boolean

  • java와 똑같이 기능

4) undefined and null

  • var undef = undefined
    • 개발자가 의도적으로 변수에 할당하는 것은 지양
    • 자바스크립트 엔진이 변수 초기화 시 undefined 사용
  • null은 변수에 값이 없다는 것을 의도적으로 명시할 때 사용

5) symbol and object

  • Symbol은 ES6에서 추가 된 7번째 타입
  • 다른 값과 중복 되지 않는 유일 무이한 값으로 이름 충돌 위험이 없는 객체의 유일한 프로퍼티
  • 키 값을 만들기 위해서 사용
  • Symbol 외의 원시 값은 리터럴을 통해 생성, 심벌은 Symbol 함수를 통해 호출해서 생성
// 심벌 생성
var key = Symbol('key');
console.log(typeof key);

// 객체 생성
var obj = {};

obj[key] = 'value';
console.log(obj[key]);
  • 자바 스크립트의 데이터 타입은 크게 원시 타입, 객체 타입으로 분류.
  • number, string, boolean, undefined, null, symbol 6가지의 데이터 타입 외의 값은 모두 객체 타입.

1-2. Dynamic Typed Language

JavaScript는 동적 타입 언어

  • 데이터 타입을 사전에 선언하지 않는다.
  • 변수 선언이 아니라 할당에 의해 타입이 결정되며 재할당에 의해 동적으로 변수의 타입이 변화할 수 있다.
var test;
console.log(typeof test);	//undefined

test = 1;					//number

test = null;				//object
//자바스크립트의 첫 번째 버전의 버그이지만 기존 코드에 영향을 줄 수 있어 아직까지 수정되지 못하고 있다.

test = {};					//객체
test = [];					//배열
test = function();			//함수

1-3. Implicit - Coercion

암시적 형변환

1) convert to string

  • 문자열 연결 연산자
    • 문자열 타입이 아닌 피연산자를 문자열 타입으로 암묵적으로 변환
    console.log(10 + '20');
  • 템플릿 리터럴 표현식 삽입
    • 표현식의 결과를 문자열 타입으로 암묵적으로 변환
    console.log(`10 + 20 : ${ 10 + 20 }`);  
  • 문자열 타입이 아닌 값을 문자열 타입으로 암묵적으로 변환하는 결과
console.log(1 + '');
console.log({] + '');
console.log(true + '');
//console.log(Symbol() + ''); Symbol()은 string으로 변환 불가

2) conver to number

  • 산술 연산자
    • 산술 연산자의 피연산자는 모두 숫자여야 하므로 숫자가 아닌 피연산자를 숫자 타입으로 암묵적 타입 변환
    console.log(10 * '5');
    //NaN - 피연산자 숫자 변환 불가로 연산 수행 불가
    console.log(10 % 'JavaScript');
  • 비교 연산자
    • 비교 연산자로 크기를 비교하기 위해 모두 숫자 타입이어야 하므로 숫자가 아니느 피연산자를 숫자타입으로 암묵적 타입 변환
    // 'a'가 문자열로 인식되어 NaN
    // 문자는 모두 NaN으로 변환되기 때문에 NaN은 비교 연산자에서 어떤 값과도 비교 불가능.
    console.log(`10 > 'a' : ${ 10 > 'a' });
  • '+ 단항 연산자'는 피연산자가 숫자 타입의 값이 아니면 숫자 타입의 값으로 암묵적 타입 변환 수행
console.log(+'JavaScript');		//NaN
console.log(+ture);				//1
console.log(+{});				//NaN
console.log(+[]);				//0
  • 빈 문자열, 빈 배열, null, false는 0으로 반환
  • true는 1로 반환
  • 객체와 undefined 함수는 변환되지 않아 NaN이 반환

3) convert to boolean

  • 자바스크립트 엔진은 불리언 타입이 아닌 값을 Truthy 값(참으로 평가되는 값) 또는 Falsy 값(거짓으로 평가되는 값)으로 구분한다.
  • Truthy -> true / Falsy -> false로 암묵적 타입 변환
  • false, undefined, null, 0 NaN, ''(빈 문자열)은 Falsy
if(undefined) console.log("if(undefined)");	//false
if(1) console.log(if(1));					//true
if(0) console.log(if(0));					//false

1-4. Explicit - Coercion

명시적 형변환

1) convert to string

  • string 생성자 함수를 new 연산자 없이 호출
console.log(String(10));
console.log(String(NaN));
console.log(String(Infinity));
  • toString() 메소드 사용
console.log((10).toString());

2) convert to number

  • Number 생성자 함수를 new 연산자 없이 호출
console.log(Number('10'));
  • parseInt, parseFloat 함수 이용(문자열 -> 숫자만 가능)
console.log(ParseFloat('10'));
console.log(parseInt('10.01'));
  • 산술 연산자 이용
console.log('10'*1);

3) convert to boolean

  • Boolean 생성자 함수를 new 연산자 없이 호출하는 방법
console.log(Boolean('JavaScript'));	//true
  • 부정 논리 연산자를 두 번 사용하는 방법
console.log(!!'JavaScript');
profile
DREAM STARTER

0개의 댓글