자바스크립트 기초 - 변수 선언

willy·2022년 1월 13일
0

Let 은 새로운 변수로 할당이 가능하다

<script>
let global_scope = 'global'
{
    let name = 'young'
    console.log(name);
    name = 'hi';
    console.log(name);
    console.log(global_scope)
}
</script>

block scope

괄호를 이용해서 블럭을 작성하면 밖에서 접근이 불가능하다.
console.log(name);

그러나 블록 바깥에서 작성한 코드는 global scope 라고 부르는데, 이는 항상 호출 가능하다.
console.log(global_scope)

예시는 다음과 같다.

이전에는 var를 사용했지만, let과 const로 나눠지며 더 세세하게 작업할 수 있어 사용하지 않는 추세다.

1.hoisting
hoisting은 어디에 선언을 했냐와 상관 없이, 제일 위로 선언문을 끌어올려주는 기능을 말한다.

<script>
age = 4; // 값 할당
var age; // 변수선언
console.log(age); // 콘솔로그에도 정상적으로 출력
</script>

Let은 선언 이전에 할당이 불가능하다.
로직상 안꼬이기 위해서라도 Var는 사용을 권하지 않는다.

<script>
age = 6;
let age1;
console.log(age1);
</script>

2.no block scope

블록스코프를 무시한다. 의도적으로 숨겨둔 변수도 끄집어 내기 때문에
프로젝트가 커짐에 따라, 선언하지도 않은 값이 할당되는 경우가 생기기도했다.

<script>
{
    age2 = 7;
    var age2;
}
console.log(age2);
</script>

3.constants

보안적으로 좋음,
const // immutable
let // mutable

4.boolean

false : 0, null, undefined, NaN, ''
true : any other value

Null 과 undefined는 비슷해보이지만 다르다.

<script>
let nothing = null; // 값이 비어있는 상태, 즉, 너는 비어있어!
console.log(`value: ${nothing}, type: ${typeof nothing}`);

let x; // 값이 정해지지 않은 상태, 너는 아무것도 아니야!
console.log(`value: ${x}, type: ${typeof x}`);
</script>

5. dynamic typing : 다이나믹 타입 랭귀지

변수를 선언할때, 어떤 타입인지 선언하지 않고, 프로그램이 동작할때 값에 따라서 타입이 변경될 수 있다.

<script>
let text = 'hellp';
console.log(`value: ${text}, type: ${typeof text}`); //데이터타입 스트링
text = 1;
console.log(`value: ${text}, type: ${typeof text}`); //데이터타입이 넘버로 바뀜
text = '7' + 6;
console.log(`value: ${text}, type: ${typeof text}`); // 6을 스트링으로 다이나믹하게 바꿔서 스트링으로 적용된 모습이다 값은 76이 출력
text = '6' / '3'
console.log(`value: ${text}, type: ${typeof text}`); // 설령 스트링으로 변수 할당을해줘도, 연산을 할 수 있다 판단하면, 스스로 변환해서 넘버 타입이 출력
</script>


자바스크립트는 런타임에서 타입이 정해지기 때문에, 에러가 가장 많이 발생하는 요소다.
예를 들어, 스트링인줄 알고 인덱싱 함수 charAt()을 불러왔는데, 숫자 타입으로 기재돼 있다면 에러가 발생한다.
그래서 데이터타입을 함께 기재하는 타입스크립트가 나타났다.

profile
같은 문제에 헤매지 않기 위해 기록합니다.

0개의 댓글