[JavaScript] 변수, 연산자, 타입

2019. 2. 15. 18:19JavaScript

변수

변수를 선언할 때 var를 사용합니다. es6부터 const, let으로도 변수를 선언할 수 있습니다. 

var와 let, const와는 스코프 즉, 변수의 효력이 있는 범위가 달라지는데 추후에 정리해서 포스팅하겠습니다.


우선 기존의 변수 선언하는 var

var

var a = 5;     // int형

var a = "a"; // string형 double quote

var a = 'a'; // string형 single quote

var a = true; // boolean형

var a = []; // Array

var a = {}; // 오브젝트

var a = undefined // undefined;

연산자

연산자 우선순위를 표현하기 위해선 ()를 사용하면 됩니다.

수학연산자 : + , - , * , / , % (나머지) 

논리연산자 , 관계연산자, 삼항연산자도 있습니다.

// or연산자의 활용

var name = 'Jin';

var result = name || 'Paul'; // name이 있다면 Jin 할당. 없다면 Paul로 할당한다.

console.log(result); // Jin 출력.


var name = '';

var result = name || 'Paul';

console.log(result) // Paul 출력

연산자 - 삼항연산자 


삼항연산자는 꽤나 많이 쓰이는 연산자입니다. 인턴할 때 삼항연산자도 몰라서 사수분이 당황해하시던 기억이 있네요...부끄럽지만 모르면 배우고 까먹지 않으면 됩니다! 삼항연산자를 사용하면 조건문을 간단히 표현해서 라인 수를 줄일 수 있습니다.

 condition? (expression1) : (expression condition이 true면 expression1을 반환하며, 조건을 만족하지않으면 expression2를 반환합니다.

const num = 11;

const result = ( num > 10) ? 'true, over 10' : 'false, under 10';

console.log(result); // num이 조건문을 만족하므로 왼쪽의 표현식을 출력한다.

연산자 - 비교연산자

비교를 위해서 ==보다는 ===를 사용하는 게 좋습니다.

===를 사용하면 type까지 비교해줍니다. 

0 == "0"    // true

0 === "0"    // false 자료형이 같이 않다

null == undefined  // true

null ===undefined  // false

* 참고로 

undefined : 변수를 선언은 했지만 할당은 하지 않은 상태입니다. 즉, 자료형이 결정되지 않은 변수입니다.

null : 변수를 선언하고, 'null' 이라는 빈 값을 할당한 경우 입니다. 즉, 자료형은 object이고, 비어있는 변수다라고 보시면 좋습니다.


console.log(null==undefined)에서 ==비교연산자는 자바스크립트 엔진이 자체적으로 둘다 값이 없다고 판단해서 true를 판단합니다.

===비교연산자를 사용하면 타입까지 체크해서 false라는 결과를 얻을 수 있습니다.


자바스크립트의 타입

자바스크립트는 타입이 실행타임에 결정됩니다!

대게 다른 언어는 미리 타입을 선언하지만(ex, int num = 15 / string str = "this is string") JS는 var/let/const로

선언하고 함수의 파라미터나 변수는 실행되는 타이밍에 타입이 결정됩니다.

(주의, 타입이 없는 게 아닙니다.)


TypeScript같은 언어를 공부하면 선언 타임에 타입을 지정할 수 있습니다.


타입체크 방법

1. typeof

function run(a){

console.log(typeof a); // typeof로 타입을 확인할 수 있습니다.

}


run('run it') // string 출력

run(false) // false 출력

2. toString.call()

// toString.call()을 이용해서 타입을 확인할 수도 있습니다.


toString.call(15); // "[object Number]" 출력

toString.call("is String"); // "[object String]" 출력

toString.call(['dd',123]); // "[object Array]" 출력

이외에도 isArray()같은 메소드도 있습니다.



[ edwith - 웹프로그래밍 부스트고스 ] 를 개인적으로 공부하고 정리한 공간입니다. 잘못된 부분은 피드백 주시면 감사하겠습니다 :