[ydkjsy]Get Started-2-Surveying JS

p*0*q·2020년 12월 28일
0

YDKJS

목록 보기
2/16

Each File is a Program

하나의 파일이 하나의 프로그램인데 이 여러 파일들이 하나의 프로그램처럼 작동할 수 있는 이유는 "global scope"를 통해 각 파일의 state를 공유해서. global scope namespace에서 섞여 런타임 때 같이 동작.

Values

  • Primitive
    - string
    • number(bigint..)
    • boolean
    • null
    • undefined(null보다 이것을 쓰기 추천)
    • symbol(추측할 수 없는 값으로 사용되는 특수 목적 값.. 주로, low-level, 라이브러리, 프레임 워크에서 사용된다.)
  • Object
    위 원시값을 제외한 나머지 전부 여기에 속한다. 그러나, 몇가지 특이한 것들이 보인다.
typeof 42;                  // "number"
typeof "abc";               // "string"
typeof true;                // "boolean"
typeof undefined;           // "undefined"
typeof null;                // "object" -- oops, bug!
typeof { "a": 1 };          // "object"
typeof [1,2,3];             // "object"
typeof function hello(){};  // "function"

null은 오류고, function은 "function"이다.

Declaring and Using Variables

let은 block scoping, var는 function scoping

Functions

function a(hi) {};//function declaration 컴파일 시 발생
var b = function(hi){};// function expression 런타임 중 저 구문에 도달하기 전까지 식별자와 연결되지 않음.

Comparisons

===은 type과 value 모두 비교한다. coercion 불허.
그런데..

NaN === NaN;            // false
0 === -0;               // true

Number.isNaN()Object.is()를 이용하자. 특히 뒤는 ====다.

원시값 외 object 같은 경우엔 주소값을 비교하여 참조관계를 알 수 있다.

[ 1, 2, 3 ] === [ 1, 2, 3 ];    // false
{ a: 42 } === { a: 42 }         // false
(x => x * 2) === (x => x * 2)   // false

var x = [ 1, 2, 3 ];

// assignment is by reference-copy, so
// y references the *same* array as x,
// not another copy of it.
var y = x;

y === x;              // true
y === [ 1, 2, 3 ];    // false
x === [ 1, 2, 3 ];    // false

Coercive Comparisons

19 == "19"; //숫자로 바뀌어 비교.
"" == 0; // 편함
0 == false;

그런데 아래와 같이 모두 문자인 경우, alphabetical 비교.

"10" < "9"; //true

How We Organize in JS

class

type을 만드는 것. 자체로 value가 아님. 사용시 new를 통해 instantiated. 상속가능.

module

Classic Modules

데이터, 동작은 유닛에 그룹화한다는 점에서 클래스와 비슷, include, access 가능. 눈에 띄는 차이 class는 this. 사용, 모듈은 스코프 안의 변수를 이용.class는 인스턴스 api가 클래스 안에 정의되어 있어 전부 공개, 모듈은 참조되지 않은 것은 비공개로 남는다.

ES Modules

import, export. 이걸 쓰자.

0개의 댓글

관련 채용 정보