딥다이브 완독하기 -1

hojoon·2023년 8월 7일
0

자바스크립트

목록 보기
7/14

메모리

  • 메모리는 데이터를 저장할 수 있는 메모리 셀의 집합체이다. 메모리 셀 하나의 크기는 1바이트, 메모리에 저장되는 모든 값은 2진수로 저장된다.

변수

  • 변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름을 말한다 .
  • 값을 재사용하기 위해 저장된 메모리 공간에 상징적인 이름을 붙인 것이 바로 변수다.

변수 선언

  • var
  • const
  • let
  • 변수 선언문은 변수 이름을 등록하고 값을 저장할 메모리 공간을 확보함.

자바스크립트 엔진의 변수 선언 단계

  1. 변수 이름을 등록해서 엔진에 변수의 존재를 알림
  2. 값을 저장하기 위해 메모리 공간을 확보하고 암무적으로 undefined를 할당해 초기화한다.

실행컨텍스트 ??

  • 모든 식별자는 실행 컨텍스트에 등록된다.

변수 선언은 소스코드가 한 줄씩 순차적으로 실행되는 시점, 즉 런타임이 아니라 그 이전 단계에서 먼저 실행되기 때문이다.

변수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 자바스크립트 고유의 특징을 변수 호이스팅 이라고 한다.

예제 04-10

console.log(score)

score=80;
var score;

console.log(score)

값의 재할당과 상수

  • var, let 은 재할당 가능
  • const 는 상수 (값을 재할당할 수 없어서 변수에 저장된 값을 변경할 수 없다면 상수)

가비지 콜렉터 (사용하지 않는 메모리 공간을 주기적으로 검사해서 해제함, 시점은 예측 불가능)

p.47 모르는 예약어들??

리터럴

  • 리터럴은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법을 말한다.

표현식

  • 표현식은 값으로 평가될 수 있는 문이다. 즉, 표현식이 평가되면 새로운 값을 생성하거나 기존 값을 참조한다.
  • 값으로 평가될 수 있는 문은 모두 표현식이다.

  • 프로그램을 구성하는 기본 단위이자 최소 실행 단위다.
  • 여러 토큰으로 구성 -> 토큰은 문법적으로 더 이상 나눌수 없는 코드의 기본 요소이다.
var sum = 1 + 2;
  • var, sum, =, 1, +, 2, ; ->하나씩 다 토큰

  • 세미콜론은 문의 종료를 나타내느 것.(나는 습관땜에 세미콜론 없으면 불앙하다..)

표현식인 문과 표현식이 아닌 문은 변수에 할당 해보는 것. 표현식인 문은 값으로 평가되므로 변수에 할당할 수 잇다.

var foo = x = 100;

데이터 타입

원시타입

  • 숫자
  • 문자열
  • 불리언
  • undefined
  • null
  • symbol

객체 타입

  • 객체
  • 함수
  • 배열

숫자

  • infinity
  • -infinity
  • NaN

이스케이프 시퀀스 (p63)

  • \0 Null
  • \b 백스페이스
  • \f 폼 피드. 프린터로 출력할 경우 다음 페이지의 시작 지점으로 이동한다?
  • \n 개행 다음 행으로
  • \r 개행 커서를 처음으로 이동
  • \t 탭(수평)
  • \v 탭(수직)
  • \uXXXX 유니코드
  • \' 작은따옴표
  • \" 큰따옴표
  • \ \ 백슬레시

symbol

  • 함수를 통해 호출
  • 객체의 유일한 프로퍼티 키를 만들수 있음
  • 외부에 노출되지 않는다.

객체

  • 자바스크립트를 이루고 있는 거의 모든 것이 객체다.

정적타입 언어

  • 컴파일 시점에 타입 체크를 한다(타입스크립트)
  • 자바스크립트는 동적 타입 언어이며 어떠한 데이터 타입의 값이라도 자유롭게 할당할 수 있다.

동적 타이핑

  • 자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정 되고 재할당에 의해 언제든지 동적으로 타입은 변경 가능
  • 동적 타입언어는 개발자의 예측과는 다른 타입을 만들어낼 수 있다.
  • 그렇기 때문에 가독성이 좋은 코드가 좋은 코드

연산자

  • / 나눗셈
  • % 나머지
    • 양수를 음수로, 음수를 양수로

증감 연산자(++, --)

  • 암묵적 할당(피연산자의 값을 변경)
var x = '1';

+x는?? 문자열을 숫자 타입으로 변환

var x = true ;

+x 또한 불리언을 숫자 타입으로 변환함(값은 1임 신기함)
-x 도 숫자로 변환(0이 됨 신기함)

문자열 연결 연산자

  • 쉽게 말해서 (+)연산자는 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작한다.
  • 1 + true = 2
  • 1 + false = 1

암묵적으로 타입을 강제 변환

할당 연산자

  • 뒤에 =이 붙는거

비교 연산자

  • 동등 비교 -> ==
  • 일치 비교 -> ===

동등 비교는 암묵적 타입 변환을 통해 타입을 일치시킨 후 값은 값인지 비교한다.

5 == '5' -> true
'0' == false -> true
0 == '' ->  true

말이 되냐?? ㅋㅋ

일치비교는 암묵적 타입 변환을 하지 않음 주의할 점이 하나 있음

  • NaN === NaN -> false

삼항 조건 연산자

? 뒤에는 참 : 뒤에는 거짓

논리 연산자

  • || OR
  • && AND
  • ! NOT

NOT은 언제나 불리언 값을 반환함

  • !0 -> true
  • !"hello" -> false

쉼표연산자, 그룹연산자 (이렇게 말하는 구나~ )

  • ,
  • ()

지수연산자

  • **
  • 2 ** 2 = 4
  • 2** 2.5 = 5.65~~~
  • Math.pow 랑 같음.
  • 지수연산자는 우결합성을 가진다 (우항에서 좌항으로)
  • 음수를 거듭제곱의 밑으로 사용하려면 괄호로 묶어야 한다
(-5)** 2

그 외의 연산자

  • ?.
  • ??
  • delete
  • new
  • instanceof
  • in

연산자 우선수위

  • 여러 개의 연산자로 이뤄진 문이 실행될 때 연산자가 실행되는 순서
  • 외우기가 어렵고 우선 순위가 젤 높은 그룹 연산자를 잘 활용하자.
  • 연산자 결합 순서가 있는데 좌항, 우항 외우기가 어렵고 그때 그때 참고해서 쓰자

제어문

  • 조건에 따라 코드 블록을 실행하거나 반복 실행할 때 사용한다.

블록문

  • 블록문의 끝에는 세미콜론을 붙이지 않는다는 것에 주의하기 바란다.

switch문

switch(표현식)
  case 표현식 1 :
  switch
  break
let a = 2 + 2;

switch (a) {
  case 3:
    alert( '비교하려는 값보다 작습니다.' );
    break;
  case 4:
    alert( '비교하려는 값과 일치합니다.' );
    break;
  case 5:
    alert( '비교하려는 값보다 큽니다.' );
    break;
  default:
    alert( "어떤 값인지 파악이 되지 않습니다." );
}
``
  • default 문에는 break를 생략하는 것이 일반적이다.

while 문

var count = 0
while(count < 3){
  console.log(count)
  count ++ ;
}
// 0 1 2

do..while 문

  • 코드 블록을 먼저 실행하고 조건식을 평가한다.
  • 코드 블록은 무조건 한 번 이상 실행된다.
var count = 0
do {
  console.log(count)
  count ++ ;
} while(count < 3)
// 0 1 2

break문

  • 코드 블록을 탈출.

continue

let string = "Hello World";
let search = "l";
let count = 0

for (let i = 0 ; i<string.length; i++){
  if(string[i] !== search) continue;
  count ++
}

다른 문자열이면 컨티뉴에서 멈추기 때문에 증감식을 안탐
profile
프론트? 백? 초보 개발자의 기록 공간

0개의 댓글