<script>
태그를 이용합니다
웹 브라우저가 작성된 코드를 해석하는 과정에서 <script>
요소를 만나면, 웹 브라우저는 HTML 해석을 잠시 멈춥니다. ( HTML 해석을 잠시 멈춘 웹 브라우저는 <script>
요소를 먼저 실행합니다. <script>
요소는 등장과 함께 실행된다는 사실을 꼭 기억하세요.
<span>태그 사용법
태그 | 속성 | 비고 |
---|---|---|
span | display | diplay요소 변경 |
width | 가로크기 | |
height | 세로크기 | |
background-color | 배경색 변경 | |
color | 글자 색 변경 | |
font-style | 글자 형식 변경 | |
margin | 외부 여백설정 | |
padding | 내부 여백설정 | |
border | 테두리 설정 |
display는 태그의 요소를 변경할 수 있는 속성입니다. 태그의 display속성 defalut값은 inline으로 되어있습니다.
width는 태그의 가로 사이즈를 지정해줄 수 있는 속성입니다. 이 속성을 사용하기 위해서는 display속성값을 inline에서 block으로 바꿔줘야합니다.
height는 태그의 세로 사이즈를 변경시킬 수 있는 속성입니다. 이 속성을 사용하기 위해서는 display속성값이 inline일 경우에는 적용되지 않습니다.
background-color는 태그의 배경색을 지정해줄 수 있는 속성입니다.
color는 태그안에있는 글자의 색상을 지정해주는 속성입니다.
font-style는 태그안의 글자 형식을 지정해주는 속성입니다.
margin 태그와 레이아웃간의 여백(외부여백)을 지정해주는 속성입니다.
padding 태그의 내부여백을 지정해주는 속성입니다.
border 태그 외곽에 테두리를 줄 수 있는 속성입니다.
body가 가장 상위에 있고, 아래에 여러 구성요소가 부모-자식 관계를 가지고 있습니다. 이 관계를 그려보면 아래와 비슷한 구조가 만들어집니다.
html>
<body> //부모
<div id="nav"> //자식 엘리먼트
<div class="logo"></div>
<div class="menu-wrapper">
<div class="menu">menu</div>
<div class="menu">menu</div>
<div class="menu">menu</div>
<div class="profile-photo">photo</div>
</div>
</div>
<div id="news-contents"> //자식 엘리먼트
<div class="news-content-wrapper">
<div class="news-picture">news-picture</div>
<div class="news-title">news-title</div>
<div class="news-description">news-description</div>
</div>
</div>
<div id="footer">footer</div> //자식 엘리먼트
</body>
</html>
설명 :
트리 구조라고 합니다. 트리 구조의 가장 큰 특징은 부모가 자식을 여러 개 가지고, 부모가 하나인 구조가 반복되는 점입니다. 즉, 부모가 가진 하나 또는 여러 개의 자식 엘리먼트를 조회하는 코드를 작성한다면, 여러 번 반복해서 실행하는 코드가 필요합니다.
consoel.log(document.body)
consoel.dir(document.body)
consoel.dir(document.body.children[1])
// document.body.children 의 첫 번째 엘리먼트를 조회
JavaScript는 인터프리터 되는 과정을 거치기 전에, 해당 소스코드를 parser -> Abstract Syntax Tree 형태로 바꾸게 됩니다.
순서 (인터프리터 + 컴파일러)
1 소스 코드를 가져와서 가장 먼저 파서(Parser)에게 넘긴다.
2 소스 코드를 분석한 후 AST(Abstract Syntax Tree), 추상 구문 트리로 변환하게 된다.
3 AST를 그림에 나와있는 Ignition에게 넘기는데 이 친구는 자바스크립트를 바이트 코드(Bytecode)로 변환하는 인터프리터이다
인터프리터 - 코드가 실행시 줄단위로 차례로 실행해서 한줄읽고 실행하는 방식으로, 동일한 동작을하는 함수가 여러번 나오더라도 이를 컴파일 하는 과정을 거치게 됩니다. 따라서 이는 매우 비효율적이다
Q 왜 인터프리터를 쓰나요?
원본 소스 코드보다 컴퓨터가 해석하기 쉬운 바이트 코드로 변환함으로써 원본 코드를 다시 파싱(Parsing)해야하는 수고를 덜고 코드의 양도 줄이면서 코드 실행 때 차지하는 메모리 공간을 아끼려는 것이다.
4 바이트 코드를 실행함으로써 우리의 소스 코드가 실제로 작동하게 된다
5 자주 사용되는 코드는 TurboFan으로 보내져서 Optimized Machine Code, 즉 최적화된 코드로 다시 컴파일된다.
6 사용이 덜 된다 싶으면 Deoptimizing 하기도 한다.