출처 : 네트워크 개념잡기 - 생활코딩 | https://youtu.be/QkPmwFX7giA
도메인은 인터넷에 연결된 컴퓨터의 ip를 사람이 쉽게 기억하기 어렵기 때문에 이를 위해서 각 ip에 사람이 쉽게 기억하고 입력할 수 있도록 문자(영문, 한글 등)로 만든 인터넷 주소이다.
:도메인 이름 시스템(DNS)은 사람이 읽을 수 있는 도메인 이름(예: www.amazon.com)을 머신이 읽을 수 있는 IP 주소(예: 192.0.2.44)로 변환
상위 기관에서 인증된 기관에게 도메인을 생성하거나 IP 주소로 변경할 수 있는 ‘권한’을 부여한다.
DNS는 이처럼 상위 기관과 하위 기관과 같은 ‘계층 구조’를 가지는 분산 데이터베이스 구조를 가진다.
도메인 네임 스페이스(Domain Name Space)
다.
네임 서버(Name Server) = 권한 있는 DNS 서버
리졸버(Resolver) = 권한 없는 DNS 서버
네임 서버
로 전달하고 찾은 정보를 클라이언트에게 제공하는 기능을 수행한다.: 호이스트는 건축/건설이나 화물 운반에 사용되는 장비로 화물 등을 들어올리는 업무를 수행한다. 즉, 아래에 위치한 것을 끌어올리는 역할을 장비인데 이 단어만으로도 '들어올리다'라는 의미를 가지고 있다.
호이스팅은 코드에 선언된 변수 및 함수를 코드 상단으로 끌어올리는 것을 말하며, 이는 변수 범위가 전역 범위인지 함수범위인지에 따라 다르게 수행될 수 있다.
함수 내에서 선언한 함수 범위의 변수는 해당 함수의 최상위로 함수 밖에서 선언한 전역 범위의 전역변수는 스크립트 단위의 최상위로 끌어올려진다.
function noDefine() {
// 변수 선언 및 할당 이전에 호출 테스트
console.log("not define: " + name);
let name = ojava;
// 변수 초기화 이후 값 확인
console.log("defined:" +name);
}
내부적으로 자바스크립트에서 let name "ojava"; 과 name="ojava";로 분리하여 번수 선언부를 함수 상단으로 끌어올려서 선언해버리므로 오류가 발생하지 않는 대신 값이 정의되지 않았다는 의미로 undefined
를 반환하는 것을 알 수 있다.
function noDefine() {
console.log("not define: " + name);
//let name = ojava;
name = "ojava"; // 변수 선언 명령어 없이 name 변수에 할당함
// 변수 초기화 이후 값 확인
console.log("defined:" +name);
}
함수 내에서 번수 선언 명령어를 제외하고 선언시 전역 변수의 형태로 사용됨에 주의하자
이 경우는 함수에서 선언 명령어 업싱 초기화 한 값을 전역 변수로 사용하고 있음을 볼 수 있으며, 예상하지 못한 결과값을 반환할 수 있으므로 주의해야 한다. 함수 선언 내용의 경우 선언한 위치와 관계없이 항상 최상단으로 호이스팅되므로 코드상에서 함수를 선언한 위치보다 먼저 호출하더라도 이상없이 호출된다. 단 함수 호이스팅은 선언방식이 함수 선언식인 경우에만 적용된다.
호이스팅이란? | https://ojava.tistory.com/144