변수

feelslikemmmm·2020년 9월 7일
0

javascript

목록 보기
18/37
post-thumbnail

변수(variable)

► variable

Variable은 변수라고 부른다. 변수란 무엇일까?

변수란 변경될 수 있는 값을 얘기한다

javascript에서는 변수를 만들 때는 let이라는 키워드를 이용한다

let은 ES6에서 추가된 언어다.

<script>
  let name ="nakwon";
  console.log("name"); // nakwon
  
  name ="hello";
  console.log("name"); // hello
</script>

위처럼 name이라는 변수를 선언하고 콘솔창을 열어보면 nakwon 이라고 출력이 된다

그 이후에 다시 name에 hello라는 값을 선언하면 name에 hello가 출력되는 것을 볼 수 있다.

► Block scope

<script>
  {
    let name = 'nakwon';
    console.log('name');

    name = 'hello';
    console.log('name');
  }
  
  console.log(name);
</script>

블럭 밖에서는 블럭안에 있는 내용들을 볼수가 없게된다.

콘솔로그를 이용해서 블럭밖에서 name이라는 코드를 실행해보면 콘솔창에 

아무것도 나오지 않는 것을 알 수 있다.

► Global scope

<script>
  let globalName = 'global Name';
  {
  	let name = 'nakwon';
	console.log('name');

	name = 'hello';
	console.log('name');

	console.log('globalName'); //globalName
  }
  
    console.log('name'); // error
    console.log('globalName'); // globalName
</script>

반대로 블럭을 쓰지않고 파일안에다가 바로 정의해서 쓰는 변수들을 global scope라고 부른다 	   

이 아이들은 어느곳에서나 접근이 가능하다 위처럼 블럭밖에서 출력해도 콘솔창에 출력이되고 

블럭안에서 선언해도 콘솔창에 출력이 된다.

global한 변수들은 어플이 실행되는순간부터 끝날때까지 항상 메모리에 

탑재되어 있기 때문에 최소한으로 사용하는것이 좋고 가능하면

클래스나 함수, if나 for loop에서 정의해서 사용하는 것이 좋다

► var

javascript에서 변수를 선언하는 키워드는 딱 하나 let이다 

그리고 let은 ES6에서 추가되었는데 그럼 그전에는 무엇을 사용했나? 바로 'var'를 사용했다

아직도 이걸 쓰는 친구가 있다면 등짝 스매쉬를 떄리고 쓰지마! 라고 해주라고 한다.

그럼 왜 var를 쓰면 안될까?

대부분은 프로그래밍언어에서는 변수를 선언하고나서 값을 할당하는게 정상적인데

var에서는 선언도 하기전에 값을 할당할 수 있고 심지어 값을 할당하기 전에도

출력을 할 수 있다. 이것을 let을 이용해서 똑같이 한다면 오류가 발생한다.

그리고 이렇게 에러가 나오는게 정상적이다.

var는 값을 사용하기도 전에 사용할 수 있는데 그것을 var hoisting이라고 한다.

'hoisting'은 어디에 선언했는지 상관없이 제일 위로 선언을 끌어올려주는것을 말한다.

그리고 var는 block scope가 없다. block을 철저히 무시하는 것이다

<script>
  { age = 4;
    var age;
  }
console.log(age); //4
</script>

이렇게 age를 block 밖에서 출력해도 정상적으로 값이 나와버린다.

초창기에는 이런 유연성을 이용해서 프로그램을 금방금방 대충대충 짜도

동작할 수 있는 어플을 만들었지만 어느정도 규모있는 프로젝트를 하다보면

선언하지도 않은 값들이 할당되어서 이상한 일들이 벌어진다

이렇게 큰 단점이 있었기 때문에 let이 등장하게 되었다

하지만 이런 최신 기능을 사용할 때에는 [can i use](https://caniuse.com/) 

닷컴에 들어가서 호환이 되는지 확인해보도록 하자.

► const

const는 한번 값을 할당하면 변하지 않는 값 (상수) 라고 한다.

let같이 변할 수 있는 값을 Mutable data type이라고 하고

const는 변경이 불가능 하기 때문에 Immutable data type이라고 부른다

그래서 많은 개발자들이 이런 얘기를 한다고 한다

'favor immutable data type always' 그 말은

왠만하면 값을 할당한 다음에 다시는 변경되지않는 그런 데이터 타입을 사용해라

라는 말이다. 그렇게 하면 좋은 이유가 많은데 그 중 3가지를 뽑아보면

1.security 
2.thread safety 
3.reduce human mistakes

► 정리

javascript에서는 변수를 선언할때 Mutable data type 의 let

Immutable data type의 const가 있다.

► Variable types

어떤 프로그래밍언어든 primitive type과 object type 두가지로 나뉜다.

► primitive type

primitive type은 더이상 작은 단위로 나눠질 수 없는 single item을 말한다

ex) number, string, boolean, null, undefiedn, symbol

► object

object는 single item들을 여러개로 묶어서 한 단위로 관리할 수 있게 해주는 것
profile
꾸준함을 잃지 말자는 모토를 가지고 개발하고 있습니다 :)

0개의 댓글