(2023/07/04) 공부 일지!

seumomo_TAEILKIM·2023년 7월 4일
0

공부일지

목록 보기
54/87

JavaScript

변수

변수는 유지보수와 성능 측면에서 사용이 필수적이다.

변수 선언

변수 이름에는 문자, 숫자, _, $만 올 수 있고, 숫자가 처음에 올 수 없다.(영어의 대소문자는 구별된다.)
let 변수이름

변수의 이름은 간결하고 무엇을 담는지 명확하도록 설정하며, 줄임말은 피한다.

  • 여부를 물어볼때는 is, has로 시작하는 이름을 주로 사용한다.

변수 할당

변수이름 = 값
let(var) 변수이름 = 값

  • var는 블록 스코프가 없다.
    => 함수의 스코프에는 영향을 받는다.
  • var로 선언된 변수는 최상단으로 호이스팅 되기 때문에 어디서든 참조가 가능하다.
    => 할당은 호이스팅되지 않기 때문에 접근하면 undefined로 출력된다.

상수

상수는 재할당하지 않을 것이라고 확신이 들 때 사용한다.

상수 선언 및 할당

상수의 이름 규칙은 변수의 이름 규칙과 같고, 상수는 선언과 동시에 할당이 되어야 한다.
const 상수이름 = 값

코드가 실행되기 전 이미 값을 알고 있는 상수는 대문자로 이름을 선언한다.

엄격모드

기본적으로 자바스크립트는 모든 버전이 호환되도록 설계되어 있는데, 모던 자바스크립트만을 사용하기 위해, 문서에 'use strict'지시자를 사용한다.

엄격모드를 사용한 후에는 사용 전으로 되돌릴 수 없다.

전역 객체

전역 객체를 사용하면 어디서나 사용 가능한 변수나 함수를 만들 수 있다.
=> 전역 변수는 성능적인 측면에서 되도록 사용하지 않는 것이 좋다.

브라우저 환경의 전역 객체는 window, Node.js 환경의 전역 객체는 global이다.

explorer를 제외한 모든 환경에서 사용되도록 통합된 전역 객체는 globalThis이다.

var로 선언된 변수는 전역 객체의 프로퍼티가 된다.

JavaScript Tree Structure

자바스크립트는 Browser와 node.js 환경에서 읽힐 수 있고, 읽히는 순간 실행 컨텍스트가 생성된다.
실행 컨텍스트는 Global(전역)과 Function으로 나뉜다.

Global(전역)

Lexical Environment(어휘적 환경)이 생성되고, Lexical Environment에는 Environment Record(기록하는 환경)이 생긴다.
Environment Record(기록하는 환경)에서는 Object Environment(객체 환경), Declarative Environment(선언 환경), this로 나뉜다.

  • Object Environment => Binding Object(var, function)
    => window의 객체에 묶인다.
  • Declarative => let, const
    => Temperal Dead Zone
  • this => GlobalThisValtue

자료형

숫자형(Number)

Infinity,-Infinity,NaN도 숫자형에 포함된다.

모든 수를 0으로 나누면 Infinity가 된다.

BigInt

2**53-1보다 크거나 -2**53-1보다 작은 정수는 숫자형으로 나타낼 수 없다.

숫자형 뒤에 n을 붙이면 BigInt로 표현된다.

문자형(String)

따옴표로 감싸주면 문자형으로 되며, 따옴표의 종류는 "", '', ```` 세가지이다.

문자열에 변수나 표현식을 넣을 때는 ```를 사용하고, 변수나 표현식을 ${}`로 감싸서 넣어준다.

불린형(Boolean)

true 또는 false로 반환된다.

null

값을 알 수 없거나, 비어있을 때 null로 반환된다.

undefined

값이 할당되지 않았을 때 undefined로 반환된다.

변수의 값이 비어있거나 알 수 없는 상태를 나타낼 때는 undefined가 아닌 null을 주로 사용한다.

객체(Object)

데이터 컬렉션이나 복잡한 개체를 표현할 때 사용한다.

Array와 Function도 객체에 해당한다.

symbol

고유한 식별자를 만들 때 사용한다.

typeof

자료형의 종류를 반환한다.

  • typeof 값 연산자 또는 typeof(값) 함수로 사용된다.
  • typeof null의 값이 object로 반환되는 것은 오류이다.
  • typeof function의 값이 function으로 반환되는 것은 오류이다.

Date 객체

New Date()로 새로운 Date 객체를 만들 수 있다.
=> () 안에 연, 월, 일, 시, 분, 초 순서대로 삽입할 수도 있다.

  • 연도 구하기
    => .getFullYear() 메소드를 사용한다.
  • 월 구하기
    => .getMonth() 메소드를 사용한다.
    => 1월이 0으로 반환되기 때문에 +1을 해줘야 한다.
  • 일 구하기
    => .getDate() 메소드를 사용한다.
  • 요일 구하기
    => .getDay() 메소드를 사용한다.
    => 0 ~ 6으로 반환되며, 0은 일요일이다.
  • 시간 구하기
    => .getHours() 메소드를 사용한다.
  • 분 구하기
    => .getMinutes() 메소드를 사용한다.
  • 초 구하기
    => .getSeconds() 메소드를 사용한다.
  • 밀리초 구하기
    => .getMilliseconds() 메소드를 사용한다.
  • 현재 시간을 밀리초 값으로 구하기
    => .getTime() 메소드를 사용한다.
    => 1970년 1월 1일 00시 00분 00초 이후의 밀리초를 반환한다.

3항 연산식

조건 ? 값1 : 값2
=> 조건이 참이면 값1을 그렇지 않으면 값2를 반환한다.

논리 연산자를 활용한 조건 식

  • &&를 사용할 때, 좌항이 true이면 우항이 실행된다.
  • ||를 사용할 때, 좌항이 false이면 우항이 실행된다.
profile
어제의 나보다 1% 발전하기💪

0개의 댓글