Skip to content

Instantly share code, notes, and snippets.

@jinsangYoo
Last active January 16, 2019 08:18
Show Gist options
  • Save jinsangYoo/0ef221f09418cdde26a1e7370a9392ac to your computer and use it in GitHub Desktop.
Save jinsangYoo/0ef221f09418cdde26a1e7370a9392ac to your computer and use it in GitHub Desktop.
자바스크립트 기본 문법

개요

  • javascript 재학습하면서 잊고 있던것, 긴가민가 했던것 재학습하면서 기록

typeof

  • 정의: 숫자, 문자열, 불 같은 자료형을 확인할 때 사용
  • 괄호 없이 사용할수 있음
    • 하지만, 코딩컨벤션을 위해서 괄호를 하자
typeof 1 + '문자열'
typeof(1 + '문자열')
typeof(1) + '문자열'

undefined 자료형

  • 정의: 선언하지 않은 변수 or 변수를 선언했지만 초기화 하지 않았을 때 해당 변수의 자료형은 undefined
  • undefined 자료형은 false

숫자와 문자열간에 자동 자료형 변환

'+'는 숫자 자료형을 문자열 자료형으로 자동 변환함

// 1
alert('52 + 273');
// 2
alert(52 + 273);
// 3
alert('52' + 273);
// 4
alert(52 + '273');
// 5
alert('52' + '273');
  • 1번 '52 + 273' 자체를 출력
  • 2번 325 출력
  • 3, 4, 5번 '52273' 출력

더하기 연산자를 제외한 사칙연산자는 문자열 자료형을 숫자 자료형으로 자동 변환함

// 1
alert('52 * 273');
// 2
alert(52 * 273);
// 3
alert('52' * 273);
// 4
alert(52 * '273');
// 5
alert('52' * '273');
  • 1번 '52 * 273' 자체를 출력
  • 나머지 '14196'

다른 자료형 -> 숫자 자료형

Number() 함수를 사용

  • 숫자가 아닌 값일 경우 NaN 값 출력
  • 자바스크립트는 복소수를 표현할수 없음
var number = Math.sqrt(-3);
alert(number);

다른 자료형 -> 문자열 자료형

String() 함수를 사용

다른 자료형 -> 불 자료형

Boolean() 함수를 사용

  • 다음 5가지는 모두 false
alert(Boolean(0));
alert(Boolean(NaN));
alert(Boolean(''));
alert(Boolean(null));
alert(Boolean(undefined));
  • 다음 2가지는 문자열이므로 true
alert(Boolean('0'));
alert(Boolean('false'));

템플릿 문자열 - ECMAScript 6

문자열 결합을 간단하게 작성할수 있음

  • 템플릿 문자열은 ` 기호로 감싸 만들며, 문자열 내부에 '${}' 기호를 사용하고 내부에 표현식을 넣으면, 문자열이 만들어질때 표현식이 계산되어 들어감
  • 변수를 넣어 사용 가능
  • 모든 버전의 IE에서 사용이 불가능
    • 바벨을 사용하면 된다고 함
alert(`표현식 273 + 52의 값은 ${52 + 273}입니다...!`);

var 변수와 let 변수의 차이

var 키워드는 전역 스코프 위치에 변수를 선언하는 키워드

  • 일반적으로 스코프 내부에 선언한 변수는 해당 변수를 생성한 이후 스코프 내부에서 사용하고, 스코프를 벗어날 때는 제거해야 메모리 등의 시스템 자원을 적절하게 이용할 수 있음
    • 하지만, 자바스크립트의 var 키워드는 그렇지 못함

let 키워드는 특정 스코프 내부에서만 변수를 선언하는 키워드

  • 바벨을 사용하면 let 키워드를 단순하게 var로 치환해주기 때문에 비동기 함수를 사용했을 때 문제가 발생할 수 있음!!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment