티스토리 뷰
01. 공백(whitespace)
- 공백은 문자를 구분하는 형태나 주석의 형태를 취할 수 있음(주석도 공백)
- 공백을 사용하지 않으면 하나의 문자들을 분리하기 위해서 필요하다.
ex) var that = this; // var와 that 사이의 공백은 제거할 수 없음
- /* */와 // 형태의 주석 사용 가능(/* */은 안전하지 않아서 // 사용 권장)
02. 이름(Names)
- 하나의 문자나 그 뒤를 이어서 하나 이상의 문자, 숫자, _가 붙는 문자열
- 문장, 변수, 매개변수, 속성명, 연산자, 라벨 등에 사용
- 예약어 : 변수나 매개변수 이름에 사용할 수 없음
객체 리터럴의 속성명이나 객체의 속성을 나타낼 때 사용하는 마침표 다음에 사용할 수 없음
abstract boolean break byte case catch char class const continue debugger default delete do double else enum export extends false final finally float for function goto if implements import in instanceof int interface long native new null package private protected public return short static super switch synchronized this throw throws transient true try typeof var volatile void while with (undefined, NaN, Infinity 등은 없음) |
03. 숫자(Numbers)
- 자바스크립트는 64비트 부동 소수점 형식 하나만 있다(자바의 double형과 같음)
- 정수와 실수의 구분이 없음 => 1 == 1.0
- 오버플로우가 발생할 일이 없음
- 숫자 리터럴 ex) 1e2 = 1 * (10^2) = 100
- 음수는 수 앞에 -를 붙이면 된다
- NaN 수치 연산을 해서 정상적인 값을 얻지 못할 때의 값
- NaN은 그 자신을 포함해서 어떤 값과도 같지 않음
- NaN인지 확인하려면 isNaN()이라는 함수를 사용
- Infinity : 1.79769313486231570e+308보다 큰 값
- Math 객체에 수치 계산을 위한 메소드가 있음
04. 문자열(Strings)
- 문자열은 작은 따옴표나 큰 따옴표로 묶어서 나타내며 따옴표 안에는 문자 0개 이상을 포함한다
- \(백슬래시)는 이스케이프 문자
- \", \', \\, \/, \b(역스페이스), \f(폼피드), \n(LF(line feed, 새 줄), \r(carrage return, 맨앞으로), \t(탭), \u(유니코드 숫자값으로 문자 표현)
- .length : 문자열의 길이
- 문자열은 immutable하다
- 'c' + 'a' + 't' === 'cat'
- 문자열은 메소드가 있음
05. 문장(Statements)
- 웹 브라우저에서 <script> 태그는 컴파일되어 즉시 실행되는 하나의 컴파일 단위
- linker가 없기 때문에 자바스크립트는 모든 문장을 공통적인 전역 이름 공간(namespace)에 몰아 넣는다
- var 문 : 함수 내부에서 사용될 때 함수의 private 변수를 정의한다
- swtich 문, while 문, for 문, do 문에서는 break 문에서 사용할 수 있는 라벨을 선택적으로 지정할 수 있다
- 문장은 대개 위에서 아래로 순서대로 실행한다
- 이러한 실행 순서는 조건문(if, switch)이나 반복문(while, for, do) 또는 실행 흐름을 벗어나는 문장(break, return, throw)이나 함수 호출로 변경할 수 있다
- 블록 : 중괄호로 쌓인 문장들의 집합
- 블록은 새로운 유효범위(scope)를 생성하지 않는다. 따라서 변수는 블록 안에서가 아니라 함수의 첫 부분에서 정의해야 한다.
- if 문 : 표현식의 값에 따라 프로그램의 흐름을 변경한다
- 거짓에 해당하는 값들
: false, null, undefined, 빈 문자열 '', 숫자 0, NaN => 이 외의 모든 값은 참이다
- switch 문 : 다중 분기를 수행. 표현 식과 모든 case 문의 표현식이 같은지를 비교한다
- case 절은 하나 이상의 case 문을 포함한다. break을 사용하여 다음 case절로 넘어가지 않게 실행 흐름을 제어
- while 문 : 단순한 반복 수행 문장
- 표현식이 참인 동안은 블록을 반복해서 실행하며, 표현식이 거짓이면 반복 수행은 끝이난다.
- for 문 : 좀 더 복잡한 반복문
- 초기화, 조건, 증가로 제어
- 객체의 속성 이름(또는 키)를 열거
- do 문 : 표현식이 블록을 실행하기 전이 아니라 실행한 후에 검사된다. 이 점만 빼면 while 문과 같음
- 적어도 한 번은 블록을 실행한다
- try 문 : 블록을 실행하면서 블록 내에서 발생하는 예외 사항 포착
- catch 절은 예외 객체를 받는 새로운 변수를 정의
- throw 문 : 예외를 발생
- return 문 : 함수에서 호출한 곳으로 되돌아가는 역할. 반환값 지정
- 표현식이 지정되지 않으면 undefined를 반환한다
- 자바스크립트는 return과 표현식 부분 사이에 줄 바꿈을 허용하지 않는다
- break 문 : 반복문이나 switch 문에서 흐름을 벗어나게 하는 역할
- 라벨 이름을 취할 수 있는데 라벨이 주어지면 라벨이 붙은 문장의 끝으로 이동한다
- 자바스크립트는 break와 라벨 사이에 줄 바꿈을 허용하지 않는다
- 표현식 문장은 값을 하나 이상의 변수나 객체의 속성에 할당하거나 메소드를 호출하고 객체의 속성을 삭제할 수 있다
- =연산자는 할당하는데 사용(동등 연산자인 ===과 혼동xxx)
- +=연산자는 더하거나 연결
06. 표현식(Expressions)
- 리터럴 값(문자열이나 숫자)
- 변수
- 내장값들(true, false, null, undefined, NaN, Infinity 등)
- new 키워드에 의한 호출 표현식
- delete 키워드 다음에 나오는 세부지정 표현식
- 괄호로 쌓인 표현식
- 전치 연산자 다음에 이어지는 표현식
- 이항 연산자의 표현식
- ? 삼항 연산자의 표현식
- 첫 번째 피연산자가 참이면 두 번째 피연산자가 값이되고 첫 번째 피연산자가 거짓이면 세 번째 피연산자가 값이 된다
- 호출
- 세부지정(. 또는 [])
- 연산자 우선순위
. [] () | 세부지정이나 호출 |
delete new typeof + - ! | 단항 연산자 |
* / % | 곱하기, 나누기, 나머지 |
+ - | 더하기/연결, 빼기 |
>= <= > < | 같지 않음 비교 |
=== !== | 동등 |
&& | 논리적 and |
|| | 논리적 or |
?: | 삼항 |
- typeof 연산자
- 결과값 : number, string, boolean, undefined, function, object
- 피연산자가 배열이나 null이면 결과는 모두 object
- ! 연산자의 피연산자 값이 참이면 결과값은 거짓이며 그 반대면 결과값은 참
- + 연산자는 수를 더하거나 문자열을 연결한다
- / 연산자는 피연산자 두 개가 모두 정수형이어도 결과값이 실수일 수 있다
- && 연산자는 첫번째 피연산자가 거짓일 경우 첫 번째 피연산자의 값을 취하고 그렇지 않은 경우에는 두 번째 피연산자 값을 결과값으로 취한다
- || 연산자는 &&와 반대
- 호출은 함수를 실행한다
- 세부지정은 객체의 속성이나 배열의 구성요소를 지정할 때 사용한다
'study > 자바스크립트핵심가이드' 카테고리의 다른 글
Chapter03. 객체 (0) | 2020.12.28 |
---|---|
Chapter01. 자바스크립트의 좋은 점들 (0) | 2020.12.16 |
- Total
- Today
- Yesterday
- 쿠버네티스
- Kubernetes
- springboot
- 자바스크립트
- 코틀린
- clean code
- IntelliJ
- JavaScript
- kotlin In Action
- 자바
- 도커
- gasmask
- 클린코드
- java
- Spring
- ddd
- back merge
- 도메인주도설계
- k8s
- kotlin
- cacheable
- docker pull limit
- ImagePullBackOff
- linuxkit
- docker for mac
- gradle
- QuickTimePlayer
- 스프링
- 스프링부트
- docker
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |