[dream-coding] 4. 변수에 대한 모든 것

연우·2023년 1월 4일
0

드림코딩

목록 보기
1/15
post-thumbnail

변수에 대한 모든것

컴퓨터를 구성하는 중요한 3가지 요소

  • 하드디스크 : 파일이나 어플리케이션을 저장
  • CPU(연산) : 저장 장치에서 데이터를 읽어와서 계산 및 처리
  • 메모리 : 데이터를 빠르게 임시적으로 읽고 쓰기 위한 곳

변수란?

  • 값을 저장하는 공간, 자료를 저장할 수 있는 이름이 주어진 기억장소
  • let 이나 const 와 같은 키워드를 사용한다.
  • 값을 할당하게 되면 메모리 주소를 가르킨다.
  • 변수는 메모리 주소를 가르키고 있어 변수이름 또는 식별자라고 부른다

변수 선언과 재할당

  • let a = 0 ; 변수 선언
    let : 키워드 / a : 변수이름 / = : 할당연산자 / 0: 값 / ; : 문의 끝
  • a = 1; 값의 재할당

변수 이름 짓는 법(나쁜 예제💩)

변수 규칙!

  • 라틴문자(0-9, a-z, A-Z,), _
  • 대소문자를 구분함
  • 추천: camelCase (likeThis) ✅
  • 한국어, 예약어, 이모지 ❌
  • 숫자로 시작 ❌
  • 특수문자 ❌ (_, $ 두가지는 예외)
  • 여러개의 변수를 1, 2, 3 숫자로 구분 ❌
    -> 최대한 의미있게, 구체적인 이름으로 작성!
// 나쁜예제 💩
let number = 20;
// 좋은예제 ✨
let myAge = 20;
// 나쁜예제 💩
let audio1;
let audio2;
// 좋은예제 ✨
let backgroundAudio;
let windAudio;
// 꿀팁! 🍯 
let audioBackground;
let audioWind;
// 여러가지 묶어 있는 데이터를 선언시 무엇인지 나타내고(힌트) 구체적인걸 뒤로

데이터 타입 Data Type

원시(primitive) : 단일 데이터

숫자 타입(number)

  • 정수, 음수, 실수, 2진수, 8진수, 16진수 출력 가능
  • console.log(0 / 123); // 0
  • console.log(123 / 0); // Infinity
  • console.log(123 / -0); // -Infinity
  • console.log(123 / 'text'); // NaN (Not a Number)

문자열 타입(string)

  • "(쌍다옴표), '(홑따옴표) 사용
  • `(백틱) 사용
  • \ 를 사용해서 특수문자를 나타낼 수 있다.
  • 템플릿 리터럴 (Template Literal) : ``백틱 사용
    백틱 사용하면 \ 사용 없이 엔터만으로 줄바꿈 가능
    ${}를 사용해서 문자열과 변수를 적절히 같이 사용할 수 있다.

// 템플릿 리터럴 (Template Literal) ``
let id = '엘리';
let greetings = "'안녕!, " + id + "✋\n즐거운 하루 보내요!'";
console.log(greetings);

greetings = `'안녕, ${id}✋
즐거운 하루 보내요!'`;
console.log(greetings);

불리언 타입(boolean)

// 불리언 타입
let= true;
let 거짓 = false;
console.log();
console.log(거짓);

// 활용예:
let isFree = true;
let isActivated = false;
let isEntrolled = true;
console.log(isActivated);

Falshy 거짓인 값 ❌

console.log(!!0);
console.log(!!-0);
console.log(!!'');
console.log(!!null);
console.log(!!undefined);
console.log(!!NaN);

Truthy 참인 값 ⭕

console.log(!!1);
console.log(!!-1);
console.log(!!'text');
console.log(!!{});
console.log(!!Infinity);

null과 undefined 타입

  • null: 의도적으로 변수에 값이 없다는 것을 명시한 상태
  • undefined:아무 값도 할당받지 않은 상태

객체(object) : 복합 데이터

  • 단일데이터의 상태와 상태의 연관된 행동(함수)를
    함께 묶어놓은 데이터
  • 복합데이터 {key: value(원시 데이터, 복합 데이터)}
  • 변수 이름에는 객체가 들어있는 메모리 주소값이 들어있음
// 원시 데이터
let name = 'apple';
let color = 'red';
let display = '🍎';
let orangeName = 'orange';

// 복합 데이터
let apple = {
  name: 'apple',
  color: 'red',
  display: '🍎',
};

console.log(apple);
console.log(apple.name); // 하나씩 접근 가능
console.log(apple.color);
console.log(apple.display);

값과 참조의 차이 (정말 중요 ✨)

  • 원시 타입 : 값 자체가 메모리 셀에 들어가 있다.(Copy by Value)
  • 객체 타입 : 참조 값(메모리주소)이 변수에 들어가 있다.(Copy by Reference)
    객체는 메모리 셀 안에 메모리주소, 즉 레퍼런스가 들어있기 때문에 레퍼런스 자체가 복사되어진다.
// 원시타입은 값이 복사되어 전달됨
let a = 1;
let b = a; //1
b = 2;
console.log(a); 
console.log(b); //2

// 객체타입은 참조값(메모리주소, 레퍼런스)가 복사되어 전달됨
let apple = {
  // 0x1234 (메모리주소)
  name: '사과',
};
let orange = apple; // 0x1234
orange.name = '오렌지';
console.log(apple); // { name: '오렌지' }
console.log(orange);// { name: '오렌지' }

상수 변수 const

  • const : 재할당 불가능이 한 상수변수 또는 변수
  • const로 객체를 할당하면 다른 객체로 할당이 불가능
  • 하지만 변수가 가르키고 있는 값들은 변경이 가능
// let 재할당이 가능
let a = 1;
a = 2;

// const 재할당이 불가능
// 1. 상수
// 2. 상수변수 또는 변수
const text = 'hello';
// text = 'hi'; 이렇게 하면 안됨!

// 1. 상수
const MAX_FRUITS = 5;

// 2. 재할당 불가능한 상수변수 또는 변수
const apple = {
  name: 'apple',
  color: 'red',
  display: '🍎',
};
// apple = {};
console.log(apple);
apple.name = 'orange';
apple.display = '🍏';
console.log(apple);

타입 확인 법 (typeof)

let variable = '';
console.log(typeof variable); // string

variable = 123; // ⬅ 할당된 값에 따라 타입이 결정됨!
console.log(typeof variable); //number

변수의 정말 중요한 포인트😍

  • 변수의 이름을 나타낼때 최대한 의미있는 이름으로 지어야한다.
  • 원시(단일데이터) : number, string, boolean, null, undefined, symbol
  • 객체(복합데이터) : object

0개의 댓글