카테고리 없음

다시 보는 javascript

cozynow 2020. 12. 24. 17:51

난 옛날 사람이다.

한참 다른 곳만 보다 그동안 javascript가 이렇게 발전하고 있었고 그 무지함에 반성을 한다.

 

■ 'use strict'

  • 타입스크립트는 상관없지만, 바닐라 스크립트를 사용할때 이 옵션을 켜두면 좀 더 강력하게 javascript 코드를 컴파일한다.

    선언되지 않은 변수 사용불가

  • 브라우저의 컴파일 속도가 빨라진다.

■ async vs defer

  • 아래와 같이 코드를 사용하면, html 코드를 파싱하면서 javascript 소스도 다운받게 되어 효율적이지만, 파싱할때 아직 다운되지 않은 javascript를 호출하면 오류가 발생한다.

<script async src="./main.js"></script>

  • 아래와 같이 사용하면, html을 먼저 parsing하고 나 후에 javascript를 동작시켜서 오류를 예방하고 다운로드는 병렬적으로 처리된다.

<script defer src="./main.js"></script>

■ let (added in ES6)

var의 hositing : 어디에서 선언하더라도 가장 위에서 선언한것으로 해준다. var는 선언을 하지 않아도 사용이 가능한 변수 문법 var는 {블록}을 모두 무시한다.

■ const (immutable data type)

  • 변경될 수 없는 상수
  • security
  • thread safety
  • reduce human mistakes

const bigInt = 112231231231231231231231231312312312n;

■ `를 이용하는 방법

console.log(`value: ${variable1}, type: ${typeof variable}`)

■ variable types

let a = 12; let a: number =12;

■ boolean

  • false : 0, null, undefined, NaNm ''
  • true : any other value

■ Symbol

const symbol1 = Symbol('id') const symbol2 = Symbol('id') console.log(symbol1 === symbol2) //false const symbol1 = Symbol.for('id') const symbol2 = Symbol.for('id') console.log(symbol1 === symbol2) // true console.log(`value: $(symbol.description), type:${typeof symbol}`)

■ loose equality

  • '==' 2개짜리 등호는 type을 변경해서 비교해서 비교한다.

const num1 = 1 const str1 = '1' console.log(num1== str1) //true console.log(num1=== str1) //false const nm1 = {name : 'akami'} const nm2 = {name : 'akami'} const nm3 = nm1 console.log(nm1== nm2) //false console.log(nm1=== nm2) //false console.log(nm1=== nm3) //true

console.log(0 == false) //true console.log(0 === false) //fasle console.log('' == false) //true console.log('' === false) //false console.log(null == undefined) //true console.log(null === undefined) //false

■ Arrow funciton

const simplePrint =()=>console.log('simle print'); const sum = (a,b)=>console.log(a+b); const mulply=(a,b)=>{ console.log(a*b) return a*b; }

■ IIFE

(function sayHello(){ console.log('hello'); })();