본문 바로가기
Backend/기본 프론트엔드 지식

[ROADMAP] JavaScript

by 2세1의 행복한 개발 2021. 3. 26.
반응형

JavaScript란?

동적으로 컨텐츠를 바꾸고, 멀티미디어를 다루고, 움직이는 이미지 그리고 꽤나 많은 다른 일들을 할 수 있는 스크립트 언어

JavaScript 실행 순서

브라우저에서 자바스크립트를 만났을 때 일반적으로는 위에서 아래 순서로 실행

const para = document.querySelector('p');
//HTML 요소 중 p태그를 선택

para.addEventListener('click', updateName);
//para에 저장된 객체가 클릭되었을 때 updateName 함수를 실행

function updateName() {
  let name = prompt('Enter a new name');
  //'Enter a new name'과 입력란 출력하여 입력받은 값을 name에 저장
  para.textContent = 'Player 1: ' + name;
  //papa(p태그)에 새로운 문자열 저장
}

만약 1번줄과 3번줄을 바꿨다면 코드는 실행되지 않음

외부의 자바스크립트

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

메모리 관리

var x = {
  a: {
    b:2
  }
};
// 2개의 오브젝트가 생성되었다. 하나의 오브젝트는 다른 오브젝트의 속성으로 참조된다.
// 나머지 하나는 'x' 변수에 할당되었다.
// 명백하게 가비지 콜렉션 수행될 메모리는 하나도 없다.


var y = x;    // 'y' 변수는 위의 오브젝트를 참조하는 두 번째 변수이다.
x = 1;        // 이제 'y' 변수가 위의 오브젝트를 참조하는 유일한 변수가 되었다.

var z = y.a;  // 위의 오브젝트의 'a' 속성을 참조했다.
              // 이제 'y.a'는 두 개의 참조를 가진다.
              // 'y'가 속성으로 참조하고 'z'라는 변수가 참조한다.

y = "yo";     // 이제 맨 처음 'y' 변수가 참조했던 오브젝트를 참조하는 오브젝트는 없다.
              // (역자: 참조하는 유일한 변수였던 y에 다른 값을 대입했다)
              // 이제 오브젝트에 가비지 콜렉션이 수행될 수 있을까?
              // 아니다. 오브젝트의 'a' 속성이 여전히 'z' 변수에 의해 참조되므로
              // 메모리를 해제할 수 없다.

z = null;     // 'z' 변수에 다른 값을 할당했다.
              // 이제 맨 처음 'x' 변수가 참조했던 오브젝트를 참조하는
              // 다른 변수는 없으므로 가비지 콜렉션이 수행된다.

참조 : developer.mozilla.org/ko/docs/Web/JavaScript/Memory_Management

'Backend > 기본 프론트엔드 지식' 카테고리의 다른 글

[ROADMAP] CSS  (0) 2021.03.26
[ROADMAP] HTML  (0) 2021.03.26

댓글