[JavaScript] 변수 (자바스크립트의 역사를 곁들인..)

hyocho·2022년 7월 10일
0

JavaScript

목록 보기
4/18


1st revised - 2022.10.05

📜자바스크립트의 역사

원래 Mocha라는 이름으로 개발되었으나, live script라고 불렸으며
그 당시 Java가 인기있는 언어였으므로 마켓팅적인 이유로 후에 Javascript로 명칭을 바꾸었다.
따라서 Java와 Javascript는 사실상 아무 관련이 없다.
ECMA라는 독립 표준 조직에 의해서 ECMA script로 불리는 첫번째 표준 모델의 Javascript, ECMA Script1(ES1)이 1997년도 출시되었다.

ES5(2009) // ES6(2015)
6년의 공백만큼 많은 것이 변화했다.

  1. let, const등 키워드 추가
  2. arrow function 추가
  3. template literal(`) 추가
  4. class 추가

현재는 ES10까지 나온 상태.
업데이트가 되어도 이전 버전으로 만든 웹브라우저에서도 돌아가야 하므로 삭제는 없고 추가만 이루어지며, 제거하는 대신 무시하는 방법으로 진행된다.


🧩변수

🛰변수 스코프

블록 레벨 스코프 (let, const)

코드 블록내에서 선언된 변수는 코드 블록내에서만 유효하며,
코드 블록 외부에서는 참조가 불가능.

함수 레벨 스코프 (var)

함수 내에서 선언된 변수는 함수 내에서만 유효하며,
함수 외부에서는 참조가 불가능하다.

함수 외부에서 생성한 변수는 모두 전역 변수가 되므로 메무리 누수 등등 실수를 잦게 만든다.
선언 전에 할당/출력이 가능하며(hoisting)
따라서 현재는 지양하는 추세.

  • global scope (전역 변수) : 어디서든 접근이 가능. 항상 메모리에 있으므로 사용을 최소화 해야한다.

🚀호이스팅 (hoisting)

함수 선언부가 유효범위(스코프) 최상단으로 끌어올려지는 현상

const a = 7

double ()

const double(){
  console.log(a*2)
}
  • 함수 표현
  • 함수 선언

Constant, r(read only)

// use const whenever possible.
// only use let if variable needs to change.
const daysInWeek = 7;
const maxNumber = 5;
// Note!
// Immutable data types
: primitive types, frozen objects (i.e. object.freeze())
// Mutable data types
: all objects by default are mutable in JS

// favor immutable data type always for a few reasons:
//  - security
//  - thread safety
//  - reduce human mistakes

Variable types

// primitive, single item - 더 이상 작은 단위로 나누지 못함
: number, string, boolean, null, undefined, symbol
// object, box container - single item이 여러개 합쳐진 단위
// function, first-class function 함수도 파라미터로 전달 가능
// number

// number - speicla numeric values: infinity, -infinity, NaN

// bigInt (fairly new, don't use it yet)

// string

// boolean
// false: 0, null, undefined, NaN, ''
// true: any other value

// null
let nothing = null;
console.log(`value: ${nothing}, type: ${typeof nothing}`);

// undefined
let x;
console.log(`value: ${x}, type: ${typeof x}`);

// symbol, create unique identifiers for objects

// object, real-life object, data structure

Dynamic typing: dynamically typed language

profile
기록하는 습관을 기르고 있습니다.

0개의 댓글