[javascript] 변수, 데이터타입, 호이스팅, typeof, 조건 연산자

2 분 소요

데이터타입 종류

기본타입

  • number(숫자)
    • 자바스크립트는 하나의 숫자형만 존재함
    • 모든 숫자를 64비트 부동소수점 형태로 저장하기 때문이다.
    • 5 / 2 같은 연산은 정수로 처리하는 것이 아닌 실수로 처리되어서 실수값 2.5가 나온다.
  • String(문자)
    • 자바스크립트에서는 한번 생성된 문자열은 읽기만 가능하고 수정은 불가능하다.
    • a = “asdf” ; a = “qwer”; 값이 변경된거 같지만 a를 새로 만든거임
  • boolean(참,거짓) : false-> 0, ‘’, NaN, undifined
  • null : 값이 텅텅 빈 변수.
    • 개발자가 명시적으로 값이 비어있음을 나타내는데 사용.
    • null 타입 변수를 typeof 연산자로 검사하면 object로 뜸
    • 따라서 a === null 과 같이 typeof 쓰지말고 그냥 ===연산자로 null 검사해야됨.
  • undifined : 값이 텅텅 비었는지, 값을 넣을건지 아직 정해지지 않은 변수
    • let a; 같이 값이 할당되지 않는거

참조타입

  • object
    • Array
    • Fucntion
    • Regexp (정규표현식)
    • symbol : 고유한 식별자를 만들때 사용
//자바스크립트의 문자열은 불변임, 값 변경 불가
var str = 'test';

str[0] = 'W';
console.log(str) // 출력값 test

var a = "asdf";
a = "qwer";
//값이 변경된거 같지만 a를 새로 만든거임
//str[1] = "ㄹ" 이런식으로 인덱스 연산자를 이용한 값변경은 안됨




const symbol1 = Symbol('id1');
const symbol2 = Symbol('id1');
consol.log(symbol1 === symbol2); // false
//식별자는 같지만, 다른 symbol


const symbol3 = Symbol.for('id1');
const symbol4 = Symbol.for('id1');
consol.log(symbol3 === symbol4); // true
//같은 이름의 식별자를 동일하게 사용할려면 for 메소드 사용



  • 자바스크립트는 동적 데이터타입 할당이여서, String 변수에 nubmer를 넣을수도 있고 반대로 Nubmer 변수에 String 값 할당가능. 자동으로 형변환이됨.
let a = 'test';
a = 7;
a = '7'+5; // 75
a = '10' / '5' // 2



변수선언

var

  • 재생성 가능, 값도 변경가능,
  • 변수 선언전에 값 변경, 값출력 가능 (undifined 로 표시됨. 호이스팅)
  • 블록스코프 무시함 { } 안에 선언했는데 밖에서도 값을 접근하고 쓸수있음.
  • 웬만하면 var 사용은 피해서 사용하는게 좋음.


let

  • 재생성 불가, 값은 변경가능
  • 변수 선언전에 값 변경, 출력 불가
  • mutable 데이터 타입 (변경 가능)


const

  • 재생성 불가, 값도 변경불가
  • immutable 데이터 타입 (변경 불가)
  • security
  • thread safety
  • reduce human mistakes 등의 이유로 사용


”” 문자열 큰따움표 안에 태그 입력시 태그 자동적용


ex)

var tag = "<h1> String </h1>";

var s; // ---> undifined
//undifined : 값이 등록되기 전의 값

if(undifined){ //---> false 반환

};


//null : 변수에 저장된 값이 null. 대체로 저장된 값을 비울때 사용
var t = hello;
t = null;

const infinity = 1 / 0; //무한대의 값이 나오면 Infinity 자료형이 됨
const nagativeInfinty = -1 / 0 //-무한대의 값이 나오면 -Infinity 자료형이 됨
const nAn = '홍길동' / 2; // nan , Not a number 즉 숫자가 아닌 자료형이 됨

const bigInt = 123456789n; // 최근에 추가된 데이터타입. 숫자 끝에 n 을 붙이면됨

let testString = "naver";

const fstring = "${testString} 의 주소는 naver.com 이다."
// template literals
// 파이썬의 fstring 과 비슷한기능. ${변수} 하면 변수의 문자열값이 대입되어 출력됨



호이스팅

  • 어디에 변수를 선언했는지에 관계없이 항상 맨위로 선언을 끌어 올려주는 기능


First-class function (함수 표현식)

  • 변수에 함수를 할당가능
  • 함수의 매개변수로 함수를 넣는것도 가능
  • 함수의 리턴타입을 함수로 하는것도 가능.
  • 데이터 타입 변수, 자료형이 할수있는건 다 가능하다고 보면됨.


typeof 변수

  • 지정한 데이터 또는 변수의 자료형 출력


문자열 결합

  • 문자열 결합은 자바랑 비슷함
  • ex) 문자열1 + 문자열2 -> 문자열12
  • ex) 문자열1 + 숫자 + 문자열2 -> 문자열1숫자문자열2


삼항 조건 연산자

  • 조건 ? true일경우 : false일경우