변수

혀어어언·2023년 3월 19일
0

Let's Get It JS 요약

목록 보기
4/7

변수(variable)

  • 특정한 값을 일시적으로 저장하기 위해 사용

  • 선언(declartion)

    • 변수를 만드는 행위
    • 변수 선언은 결괏값이 항상 undefined로 출력
      • undefined가 기본 값의 역할을 하기 때문
    > let 변수명;
    > 변수명;	// undefined
    // 값을 대입하지 않은 변수를 입력하면 undefined가 출력된다.
  • 초기화(initialization)

    • 변수를 선언함과 동시에 갑을 대입하는 행위
    > let hello = 'hello';
    > hello;	//'hello'
  • 변수의 이름과 값이 저장되는 위치는 컴퓨터의 메모리

  • 따라서 메모리를 초기화하면 메모리에 저장되어 있던 변수도 같이 사라짐

    • 웹 브라우저를 새로고침하면 메모리가 초기화된다

변수명 짓기

  • 변수명은 변수의 값에 대한 정보를 주기 때문에 자세하게 짓는 것이 권장됨
let strawberry = 'mango'
// 변수명은 strawberry인데 저장된 값이 'mango'이면 사용자가 헷갈릴 수 있음

let c = 'coffe'
// 또한 아무의미 없는 변수명 c를 사용하면 저장된 값이 무엇인지 추정하기가 매우 어려워짐
변수명 제약
사용 가능한 특수문자
  • $(doller sign)
  • _(underscore)
숫자로 시작할 수 없음
> let er*ror = 'Nope!'
//  Uncaught SyntaxError: Unexpected token '*'

> let 8error = 'Nope!'
//  Uncaught SyntaxError: Invalid or unexpected token
한글, 한자, 유니코드 사용 가능
예약어(reserved word)는 변수명으로 사용하지 않음
  • 예약어는 JS 프로그래밍에서 특정한 역할을 하므로 변수명으로 쓸 수 없음
let let = 'Nope!'
//	Uncaught SyntaxError: let is disallowed as a lexically bound name

let const = 'Nope!'
//	Uncaught SyntaxError: Unexpected token 'const'

let class = 'Nope!'
// Uncaught SyntaxError: Unexpected token 'class'
  • 예약어로는 다음과 같은 단어들이 있음
    • JS 버전에 따라 추가되거나 제외될 수 있음
await, break, case, catch, class, const, continue, debugger, default, delete, do, else, enum, export, extends, false, finally, for, function, if, import, in, instanceof, new, null, return, super, switch, this, throw, true, try, typeof, var, void, while, with, yield

변수의 값 수정하기

  • 변수는 변하는 숫자라는 의미이지만 숫자 자료형 외에도 다양한 자료형의 값을 저장 할 수 있음
> let isChanged = false;	// undefined
//	let이 있기 때문에 선언문
//	식과 달리 결괏값이 없고 식의 자리에 사용할 수 없음

> isChanged	// false;
//	let이 없기 때문에 코드가 '식'이라 대입한 값이 결괏값으로 출력됨
> isChanged = true;	// true
  • 변수에 넣은 값 비우기
    • undefined 또는 null 대입
      • 두 경우 모두 변수의 값을 빈 값으로 바꾼다는 점에서는 동일하지만, 엄밀히 다른 값이기 때문에 다른 의미 부여 가능
      • undefined 대신 null 사용 시 누군가가 의도적으로 빈값으로 변경했다는 것을 인지할 수 있음
> isChanged = undefined;
// undefined;

> isChanged = null;
// null

변수 활용하기

변수를 다른 변수에 대입하기
> let string = 'hello, variable!';
// undefined
> let string2 = string;
// undefined
> string2;
// 'hello, variable!'
변수를 자기 자신에 대입하기
> let number = 2;
// undefined
> number = number + 2;
//	4

//축약해보기
> number += 2;
// 6

> number **= 2;
// 36;

> number /= 4;
// 9;
중복을 줄이기 위한 변수 활용
> '기이이이이이이이이이이ㅣ인~~~문자열';	// 기이이이이이이이이이이ㅣ인~~~문자열
> '기이이이이이이이이이이ㅣ인~~~문자열';	// 기이이이이이이이이이이ㅣ인~~~문자열
> '기이이이이이이이이이이ㅣ인~~~문자열';	// 기이이이이이이이이이이ㅣ인~~~문자열

> const string = '기이이이이이이이이이이ㅣ인~~~문자열';
> string;	// 기이이이이이이이이이이ㅣ인~~~문자열
> string;	// 기이이이이이이이이이이ㅣ인~~~문자열
> string;	// 기이이이이이이이이이이ㅣ인~~~문자열

상수 만들기

  • 변수 선언 예약어에는 const, let, var가 있음
  • const는 상수(constant)의 줄임말
    • const는 객체의 내부 값에는 적용되지 않기 때문에 엄밀한 의미에서 상수가 아님
    • 따라서 JS 커뮤니티에서는 보통 const도 변수라고 부름
const
  • const는 초기화 이후 값 재할당이 불가능함
  • 초기화란?
    • 선언과 동시에 값을 대입하는 것을 의미함
> const helloWorld = 'hello world!';
> helloWorld = 'hell world!'	// Uncaught TypeError: Assignment to constant variable.
  • const는 선언 이후 값 재할당이 불가능하므로 선언 시 초기화 해주어야 함
> const helloConst;	// Uncaught SyntaxError: Missing initializer in const declaration
> const helloConst = 'hello const!'
상수를 사용하는 이유?
  • 실제로 프로그래밍을 하다보면 변수의 값을 수정할 일이 생각보다 많지 않음
  • 또한 실수로 값을 수정하는 일을 예방하기 위해 상수 사용

var 알아보기

  • var는 변수(variable)의 줄임말
  • 한번 선언된 변수 재선언 가능
    • 이 때문에 실수로 변수를 다시 선언하는 문제가 발생할 수도 있음
  • 또한 예약어나 다름 없는 이름을 변수명으로 사용 가능
    • 예약어는 JS에서 각자의 역할이 있기 때문에 이러한 이름을 변수명으로 쓰면 같은 코드를 보는 다른 개발자가 헷갈릴 수 있음
    • var말고 let 사용 시 에러가 발생해 이러한 예약어를 변수명으로 사용하는 것을 방지할 수 있음
> let undefined = 'defined'; // Uncaught SyntaxError: Identifier 'undefined' has already been declared
> var undefined = 'defined';

> let Infinity = 0; // Uncaught SyntaxError: Identifier 'Infinity' has already been declared
> var Infinity = 0;

> let let = 'const';	// Uncaught SyntaxError: let is disallowed as a lexically bound name
> var let = 'const';

0개의 댓글