Grammar

  • Control Characters(제어문자) : 눈에 보이지 않지만 여러가지 제어를 위해 삽입되는 문자.
  • White Space(공백) : 공백 (띄어쓰기)를 컴퓨터가 인식하게 하는 문자.
  • Line terminators(줄바꿈) : 말 그대로 컴퓨터가 줄바꿈을 인식할 수 있게하는 문자.
  • Comments(주석) : 실제 코드로 작성되어있긴 하지만, 번역기가 코드를 컴퓨터가 이해할 수 있는 더 저차원의 언어로 해석할 때 명령으로 인식하지 않는 부분. 사람들이 코드 내용을 편하게 이해하거나 쉽게 기억하기 위해 사용.
  • Keywords(키워드) : 미리 약속으로 정해둔 단어들. 이 키워드를 해석기가 만나면 키워드에 미리 지정된 방식으로 내용으로 인식.
  • Literals(리터럴) : 더 이상 나눌 수 없는 값을 표현. 예를 들면 3, ‘3’, [] 등…

Statement

  • empty statement : 공문(빈문).
  • block statement : 중문({})
  • control statement : 제어문
  • expression statement : 식문
  • (variable) declare statement : (변수)선언문

선언, 할당

1
2
3
var a; // 선언
var a = 123; //값 할당
a = 222; // 재할당

Expression(표현식)

코드 중에 값으로 변환될 수 있는 부분을 표현식이라고 부릅니다.

함수 표현식

1
2
3
4
5
// 함수 익명 표현식
// 자바스크립트는 1급 객체라서 변수에 함수를 넣을 수 있습니다.
var count = function() {
return count;
};

자바스크립트가 1급객체이기 때문에 가능한 것

  1. 함수를 변수나 데이터에 할당 할 수 있습니다.
  2. 함수를 인자로 전달 할 수 있다.
  3. 함수를 리턴 할 수 있다.

Type (Primitive(원시), Reference(참조))

원시타입 참조타입
Number Object
String
Boolean
Undefined
Null
Symbol

typeof

1
2
typeof []; // 'object'
// typeof는 타입을 알려줌

배열 타입

자바스크립트 배열은 가짜고 obj이다
배열은 JavaScript에 내장되어 있는 자료구조이며 배열은 객체의 일종이지만, 내부적으로 특별하게 취급되어 일반적인 객체들과는 다른 특징을 갖고 있습니다.

Array.isArray

어떤 값이 배열인지 아닌지 판별하기 위해서 Array.isArray 정적 메소드를 사용합니다.

1
2
Array.isArray([]); // true
Array.isArray({}); // false

Truthy & Falsy

true -> truthy, false -> falsy라고 부릅니다.

truthy falsy
falsy 말고 모든것 false
null
undefined
0
NaN
‘’

Truthy & Falsy 실습

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
function test(str) {
// true가 아니면 return
if (!str) return;
// true이면 '문자열을 들어옴' 호출
return "문자열을 들어옴";
}
test("hello"); // 문자열을 들어옴

// 삼항연산자
// '' 빈값이 생기면 삼항 연산자 사용이 필요 없음
function test2(str) {
// true ? 호출 : ''
// false ? '' : 호출
return str ? "문자열을 들어옴" : "";
}
test2("hello"); // 문자열을 들어옴

var test3 = function(str) {
// true && true -> 뒤가 호출
return str && "문자열을 들어옴";
};
test3("hello"); // 문자열을 들어옴

let test4 = function(str) {
// true || true -> 앞이 호출
return str || "아무것도 없음";
};
test4("hello"); // hello

Scope

특정 변수가 유효한 코드 상의 유효 범위를 가지고 스코프라고 합니다.

변수

const let var
스코프 블록 스코프 블록 스코프 함수 스코프
재할당 X O O
재선언 X X O
호이스팅 X X O
사용 권장 1 순위 2 순위 3 순위

🏷 호이스팅

함수 또는 var변수의 선언부를 현재 scope의 최상단으로 끌어올려지는 현상입니다.
var로 선언된 변수는 내부적으로 함수 혹은 파일의 맨위로 끌어올려지는 과정을 호이스팅이리고 한다. 변수의 선언만 위로 끌어올려질 뿐 값을 대입하는 과정은 코드의 순서에 맞게 이루어지기 때문에, 대입에 일어나기 전에 변수의 값을 읽으면 undefined가 불러와지게 됩니다.

참고한 자료및 주소

https://www.bsidesoft.com/?p=4074
https://medium.com/@soeunlee/javascript%EC%97%90%EC%84%9C-%EC%99%9C-%ED%95%A8%EC%88%98%EA%B0%80-1%EA%B8%89-%EA%B0%9D%EC%B2%B4%EC%9D%BC%EA%B9%8C%EC%9A%94-cc6bd2a9ecac