변수(Variables)란?
Variables(변수)는
데이터를 담는 새 컨테이너를 말한다.
새 변수 만들기
var: variable 데이터를 담을 새 컨테이너
myName: 새 컨테이너 이름
Angela: Value
Value 바꾸기
var는 컨테이너 처음 만들때만 쓴다
이 전에 있던 Angela는 꺼내서 버리고
새로운 이름이 통 안으로 들어간다.
alert로 value가 나오게 하기
1 변수에 Hannona를 담고
2 alert로 변수이름을 부르면 그 안에 들어있는 Hanoona를 보여준다.
Prompt에 입력된 내용 저장하기
변수를 이용해서 prompt에 입력한 내용을 저장할 수 있다.
prompt만 사용하면 입력창이 뜨는데
내용을 입력해도 저장되는 곳은 없다.
입력한 내용을 저장하려면 변수를 만들어 담아주면 된다.
콘솔에서 확인
변수에 저장하고 사용하기
1-1 변수에 바로 저장 후 alert로 보여주기
1-2 앞 내용을 지워도 그대로 나옴
컴퓨터에 이전 벨류가 저장되어 있어서
앞 내용을 지워도 그대로 나온다.
변수 a, b에 있는 벨류 바꾸기
변수에 바뀐 숫자를 입력하지 않고
a = 8
b = 3
이 되는 방법을 생각해보자.
- 정답 -
새로운 컨테이너 c를 만들어서 서로 옮겨 담는 방법을 쓴다.
잘 바뀌었나 보기
global scope vs block scope
global scope은 어느 곳에서나 접근이 가능하다.
block scope은 { }으로 감싸서 블럭을 만들고
블럭 밖에서는 호출이 되지 않는다.
global한 변수들은 만들어지는 순간 부터 항상 메모리에 탑재 되기 때문에
최소한으로 쓰는 것이 좋다.
변수 종류
변수를 선언할 때 다음 3가지의 옵션이 있다.
1. var
block scope 무시, 어디서나 호출
2. const
포인터가 잠겨 있어 immutable datatype 이다.
하지만 const 안에든 object는 변경이 가능하다.
const person = {name: Jane, age: 20} 로 정의하면
person.name = Brown
person.age = 40;
이렇게 변경이 가능하다.
장점
1. security : 해커들이 이상한 코드를 삽입해서 값을 계속해서 변경할 수 없도록 함
2. thread safety: 한가지 프로세스가 할당되고, 그 프로세스 안에는 다양한 thread가 동시에 돌아가며 application을 효율적으로 빠르게 돌아가도록 한다. 이 thread들이 동시에 변수에 접속해서 값을 변경할 수 있는데 좀 위험한 방식이다. 그래서 const를 사용해 값을 변경할 수 없도록 한다.
3. reduce human mistakes 혹시 모르고 값을 변경할 수 있는 경우를 미리 방지할 수 있다.
3. let
block scope 밖에서 호출 안됨
mutable datatype: 값을 변경할 수 있는 데이터 타입
immutable datatype: 값을 변경할 수 없는 데이터 타입
mutable 타입의 let,
immutable 타입의 const만 사용하길 권장된다.
var를 쓰지 않는 이유
const, let 둘 만 쓰고 var를 쓰지 않기를 권장한다.
이유는 var는 var hoisting 이 일어나서 문제가 발생하기 때문이다.
hoisting 이란?
어디에 선언 했냐에 상관없이 해당 코드는 맨 위로 올라가서
다른 코드보다 우선적으로 실행되는 것.
그래서
1. var는 코드 순서가 바뀌어도 실행이 된다.
아래 같이 var age; 선언을 맨 마지막에 했는데도
결과가 출력되었다.
let로 똑같이 했을 때는 에러가 나왔다.
2. block scope이 없다.
블럭 안에 들어가 있어도 실행이 된다.
나중에 규모가 큰 프로젝트를 하다보면
선언하지 않은 값들이 튀어 나온다.
-- 출처 --
1. udemy Angela Yu Fullstack 강의
2. 유튜브 드림코딩 데이터타입
'Java Script > JS basic' 카테고리의 다른 글
JS] 자바스크립트 string - concatenation, length, slicing, extracting (0) | 2021.08.04 |
---|---|
JS] 자바스크립트 변수명 짓는법 | Naming variables (0) | 2021.08.02 |
JS]자바스크립트 Alert / Prompt (0) | 2021.07.31 |
JS] 데이터 타입 | (0) | 2021.07.30 |
JS] 자바스크립트 기본 문법 (0) | 2021.07.27 |
댓글