기술면접_JavaScript_11_13
## 프론트엔드 개발자 입문(비동기처리) | Callback,Promise,Async,Await ### Contents 1...
let name_ = 'Daye';
console.log(name_);
name_ = 'hello';
console.log(name_);
/*
과정
1. App생성 시 메모리가 할당됨
2. let을 통해 특정 메모리 영역을 사용할 수 있는 포인터 생성
3. name이 가리키는 메모리 영역에 다른 값 할당
*/
한 번 할당하면 값이 변하지 않는 변수선언 키워드로 let사용 시, 포인터가 가리키는 메모리 영역의 데이터 값을 변경할 수 있으나 constant는 포인터가 잠겨있어 값 할당 이후에는 데이터를 변경할 수 없음
중괄호를 이용해 블럭 안에 코드 작성, 블럭 밖에서는 내용에 접근할 수 없음
블럭 밖에 코드를 작성, 블럭 바깥에서도 내용에 접근할 수 있음 (프로그램 시작부터 종료까지 메모리 공간을 차지하기 때문에 가능한 적게 사용하는 것을 권장)
let globalScope = 'globalScope';
{
let blockScope = 'blockScope';
}
console.log(globalScope);
console.log(blockScope);
box contaier가 single item주소를 참조하여 메모리에 저장됨 (const사용 시, single item을 가리키는 포인터는 잠금되지 않으므로 수정가능)
// 1. number
/*
JavaScript 숫자범위 : (-2**53) ~ 2**53
BigInt : 숫자범위를 넘어가는 경우 끝에 n을 붙여 확장(일부 부라우저 지원)
*/
// 2. string
const name_ = 'Daye'
console.log('Hello ' + name_)
console.log(`Hello ${name_}`)
/*
template literals :
`${}`사용 시, 다수의 string과 변수를 함께 작성할 때에 매번 +로 이어붙이는 번거로움을 줄일 수 있음
*/
// 3. boolean
/*
false : 0, null(Empty상태), undefined(값이 지정되지 않은상태), Nan
true : any other value
*/
// 4. symbol (create unique identifiers for objects)
const symbol1 = Symbol('id');
const symbol2 = Symbol('id');
const gSymbol1 = Symbol.for('id');
const gSymbol2 = Symbol.for('id');
/*
Symbol('id'); : symbol1, symbol2에 서로다른 고유식별자 생성
Symbol.for('id'); : gSymbol1, gSymbol2에 동일한 고유식별자 생성
출력 : symbol1.description과 같이 description을 추가하여 string변환 후 출력해야 함
*/
//동적언어는 개인이 프로토타입을 빠르게 만들기에는 적절하나, 다수의 개발자가 규모있는 프로젝트를 진행할 때에 아래와 같은 오류가 발생할 수 있음
let text = 'hello';
console.log(text.charAt(0));
text = 1;
console.log(text.charAt(0));
/*
과정 :
1. 개발자1이 text변수에 hello값을 넣음
2. 개발자1이 text변수의 첫 번째 문자index를 출력함
3. 오류가 발생하지 않음
4. 개발자2가 text변수에 숫자 1을 넣음
5. 개발자3이 text변수명을 보고 string이라고 예상 후 첫 번째 문자index를 출력함
6. 오류발생
해결책 : TypeScript(JavaScript위에 Type이 올려진 언어)
*/
Avenco comes with a built-in contact form.