[Day 16] Javascript Tutorial + Javascript 소개 + 값 다루기 + number 타입
Javascript Tutorial
- 표현식 (Expression)
- Javascript 문장의 구성요소를 구분하는 하나의 단위로, 값으로 변환될 수 있는 부분을 말한다.
- 변수 (Variable)
- 제어 흐름
- if ~ else 구문
- while 구문
- for 구문
- 함수 (Function)
- 객체 (Object)
- 여러 개의 값을 한꺼번에 담아 통(container) 처럼 사용할 수 있는 자료구조
- 이름-값 연결되어 있는 구조 (name-value pair)
- 객체의 속성(property)
- html 에서의 속성은 attribute 로 부른다.
- 객체의 속성 이름에는 ‘ ‘(“ “)를 붙이는 것이 원칙이지만, 단축 표기법으로 따옴표를 쓰지 않고도 된다.
- 객체의 속성 값에는 어떤 것이든 올 수 있다.
- 메소드(method)
- 객체의 속성으로 사용되는 함수
- 어떤 객체의 메소드 안에 this가 있으면 그 this는 ‘메소드가 호출될 때’ 해당 객체를 가리키게 된다.
- 배열 (Array)
- 객체의 일종. 배열에 담는 데이터는 객체의 경우와 달리 요소(element) 혹은 항목(item)이라고 부른다.
- 배열안에 여러 개의 값을 저장할 수 있지만, 배열 요소 간에는 순서가 존재하며, 이름 대신에 인덱스(index)를 이용해 값에 접근한다.
- 배열에 요소 추가
- 배열에서 요소 제거
- pop(), shift(), splice(index, count), …
Javascript 소개
- 언어와 구동환경
- Javascript 라는 언어와 JS를 돌릴 수 있는 구동환경(Browser)에서의 언어는 다르다.
- console.log / alert 등등은 JS의 언어가 아닌 구동환경(Browser)에 내장된 언어다.
- Node.js 에서는 console.log, alert 등의 메소드를 활용하지 못한다.
- ES2015(=== ES6)
- ES2015 이전과 이후는 차이가 매우 크다. (거의 다른 언어처럼 보일 정도)
- ES2015 이전의 JS는 유지보수가 어렵고, 일관성이 없는 등의 문제가 있어서 범용 프로그래밍 언어로는 사용되지 못했다.
값 다루기
- 변수 (Variable)
let
은 변수를 선언할 때 쓰는 키워드 (ES2015) - best practice(좋은 관례)
const
는 상수를 선언할 때 쓰는 키워드 (ES2015)
- 재대입이 불가능하기 때문에 선언과 대입을 동시에 해줘야 한다.
- 식별자 (Identifier)
- 변수 이름으로 쓸 수 있는 단어
- 어떤 개체를 유일하게 식별하기 위해 사용하는 단어
- 식별자 규칙
- 숫자, 알파벳, $, _ 가 포함될 수 있다.
- 숫자로 시작해서는 안 된다.
- 예약어(keyword)는 식별자가 될 수 없다.
- 식별자는 따옴표 없이 객체 속성의 이름으로 사용할 수 있다.
- 식별자 규칙을 벗어난 단어를 객체 속성의 이름으로 사용하려면 따옴표를 사용해야 한다.
- Camel Case (압도적으로 많이 쓰인다.)
let javaScript;
let fooBar;
- Snake Case
let java_script;
let foo_bar;
- 타입 (Type)
- 값의 종류, 자료형 (data type)
typeof
연산자를 사용해 값의 타입을 확인할 수 있다.
number 타입
- 비교 연산자
==
(동등) , ===
(일치)
===
를 쓰는게 관례이고, 더 낫다.
==
는 타입을 자동으로 바꿔서 비교하는 경우가 있기 때문에 지양하는 것이 좋다.
- 연산자 우선순위
- MDN 연산자 우선순위
- evaluate(평가) - 표현식을 값으로 변환하는 절차
- 평가되는 순서를 고려해서 코드를 짤 필요가 있다.
- number 타입의 특이한 값들
- NaN (Not a Number)
- 계산 불가능한 연산의 결과값을 나타내기 위해 사용된다.
thisIsNan === NaN;
이런 식으로 등호로 비교하면 안된다!! (무조건 false return)
===
은 숫자 비교에 특화된 연산자
- NaN은 숫자가 아니기 때문에 어떤 숫자와도 같 지 않다. (즉, NaN은 number타입인 NaN과도 같지 않다.)
- -0
- 0과 -0은 별개의 값이다.
- 일치 연산(===) 해보면 true가 나오긴 한다.
Object.is
함수에서는 0과 -0을 다른 값으로 취급한다.
- 0이 아닌 어떤 수를 0 혹은 -0으로 나눌 때에도 결과값이 다르다.
- Infinity
- 무한히 큰 양수
- Infinity인지 아닌지 판별하려면
Number.isFinite()
메소드를 사용한다.
- -Infinity
- 수 연산을 하기 전에 모든 피연산자를 확실히 number 타입으로 만들어 주는 것이 좋은 습관이다!!
댓글남기기