JavaScript

JavaScript를 이해해 보자

NEWDODORIPYO 2022. 4. 23. 18:24

⭐JavaScript 기본적으로 Single thread

 

브라우저의 내부에는 총 3개의 엔진이 동작한다 

  • hyml을 Docoment라고 부름 →Docoment를 처리하는 DOM엔진 브라우저 엔진 이라고도 함
  • style엔진
  • script엔진은 →DOM엔진이 처리불가 →자바스크립트 엔진이 처리

 

✌자바스크립트는 2번 읽는다

1번 문자열을 읽어서 프로그램을 실행시킬수있는 구조를 만든다

2번 실행하는 과정

   <script>
				doA()
				 function doA(){
	        console.log("AAA")
    }
</script>

이게 실행되는 이유

실행하면 doA()실행 이기에 skip 하고 function을 만난다 그럼 메모리상에 doA를 만들고 그게 function을 가리키게 하고 2번째 읽는 과정에서는 doA가 있으니까 실행이 된다

이런 건 어떨까? 이건 읽을 수 있을까?

 <script>
				
	doA()
			
</script>

<script>

 function doA(){
	        console.log("AAA")
    }
</script>

이건 읽지 못한다 그 이유는 자바 스클 비트는 script 단위로 던지기 때문에

실행해보면 not defined 가 나온다

Window의 이해

 <script>
	
function doA(){
	        console.log("AAA")
    }			
			
</script>

<script>

doA()
 
</script>

위 예시와는 반대의 상황이다 하지만 이 코드는 실행이 된다 그 이유는 무엇일까??

이유는 script 공간에 먼저 doA가 만들어졌기 때문이다 그렇다는 건 script 이 같은 메모리 공간을 사용하고 있다는 뜻인데 브라우저에서는 그 공간을 Window라고 한다

 

😒not defined과 undefiend

not defined

함수가 존재 안 할 때

undefiend  

변수는 존재하나, 어떠한 값으로도 할당되지 않아  자료형이 정해지지(undefined) 않은 상태

console.log(userName)

var userName = "...."

이렇게 값이 없는 경우를 undefiend라고 한다

 

😱무서운 alert

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
    <script>
        alert("어허")
    </script>
    
    <h1>안녕</h1>
</body>
</html>

실행시켜보자

❗alert 밑에 있던 “<h1> 안녕 </h1>” 는 못 나왔다... 왜 이럴까?

브라우저는 Single thread 이기에 브라우저가 처리하지 못하는 script태그를 만나니 멈춘다 그렇기 때문에 뒤에 코드가 나오지 못하는 것이다

 

'JavaScript' 카테고리의 다른 글

JavaScript 이벤트  (0) 2022.04.25
JavaScript preventDefault() , target  (0) 2022.04.24
⭐ JavaScript 버블링 , 캡쳐링  (0) 2022.04.24
객체야 어디 있니~ 객체 검색 방법  (0) 2022.04.24
JavaScript 로 검색 키워드 만들기  (0) 2022.04.24