본문 바로가기

[JavaScript]3

원시 값 vs 참조 값 원시 값 원시 값은 객체가 아닌 데이터 타입을 뜻하고 변경 불가능한 값이다. 숫자, 문자, Boolean, null, undefined, symbol 등이 있다. 변경이 불가능한 값이라는 건 재할당이 불가능하단 의미가 아니라 메모리에 올라간 값이 변경되지 않는다는 의미이다. let number = 10; // (재할당전) number 0x10에 10이 있다. number = 20; // (재할당후) number 0x88에 20이 있다. //즉, 0x10에 저장된 값 자체가 변경되는 것이 아닌 새로운 메모리 공간을 확보하여 값을 재할당한다. 참조 값 참조 값은 원시 값이 아닌 모든 값을 참조 값이라하고 변경 가능한 값이다. object, 배열, 함수 등이 있다. 참조 값을 할당한 변수는 객체가 저장된 메모.. 2024. 2. 15.
var, let 뭐가 달라? var의 경우 ES6 이전부터 사용해 왔으며 변수의 재선언과 재할당이 모두 가능하다. 또한 전역/함수(지역) 스코프를 갖는다. let의 경우 ES6 이후부터 사용하였으며 변수의 재선언을 불가능하지만 재할당은 가능하다. 또한 블록 스코프를 갖는다. 블록 스코프란 변수가 { }( 객체가 아닌 if { } 같은 것을 의미 )에서 생성되면 해당 블록에 속하게 된다. 따라서 블록 바깥에서는 변수 접근이 불가능해진다는 점에서 var과 차이가 있다. var name = 'ty'; var name = 'tt'; //재선언 가능 let name = 'ty'; let name = 'tt'; //재선언 불가능 function aa() { for( var i=0; i 2024. 2. 13.
<script>에서 async, defer는 뭘까? async, defer를 알기 위해선 script가 어떤 구조로 실행되는지 알아야 한다. 자바스크립트는 parser blocking resource(파서 차단 리로스)이다. 즉, 문서를 파싱해서 읽다가 자바스크립트를 만나면 진행 중인 파싱을 멈추고 스크립트를 다운하고 실행한다. 그리고 다시 파싱을 시작한다. 스크립트의 크기가 커질수록 멈추는 시간이 길어지기 때문에 다른 방법을 찾아야 한다. script async를 사용하면 문서를 파싱하는 동안 멈추지 않고 스크립트를 다운할 수 있다. 하지만 스크립트 다운이 끝나면 즉시 스크립트가 실행되고 파싱은 멈춘다. 그리고 스크립트 실행이 끝나면 다시 문서 파싱을 시작한다. script defer는 문서를 파싱하는 동안 멈추지 않고 스크립트를 다운할 수 있다는 점에.. 2024. 2. 4.