변수_ 2020.10.26

2020. 10. 27. 17:42·BootCamp_Codestates/Pre Tech Blog

Achievement Goals

  • 변수의 선언과 할당에 대해서 설명하고 코드로 작성할 수 있어야 한다.
  • 표현문이 값으로 변환되어서 변수에 할당되어 담기는 과정을 설명할 수 있어야 한다.
  • What is the meaning of 변수?
  • 데이터 보관함(메모리)
  • 보관함의 크기는 동일
  • 각 보관함의 이름 = 변수
  • 이름을 통해 데이터 사용(재활용)

변수란?

메모리에 공간을 할당받아 하나의 값을 저장할 때, 그 값을 찾아갈 수 있는 이름 혹은 그 공간 자체를 뜻한다.

변수에는 값, 표현식, 함수 등이 저장될 수 있다.

let age = 42;
age = '마흔두살

변수의 선언 3가지

var name = '김정은인민지도자?';
//변수선언과 값 초기화.

let name = '트럼프대통령';
//블록 범위(scope) 지역 변수 선언 및 값 초기화

const name = '문재인대통령';
//블록 범위 읽기 전용 상수 선언

var, let, const 의 차이점

1. var (변수 재선언 가능)

var variable = '최초변수선언'; 
console.log(variable); //최초변수선언
var variable = '변수재선언'; 
console.log(variable); //변수재선언

같은 이름의 변수가 남용될 수 있는 단점이 존재하여 이를 보완하기 위해 let, const 가 추가됨.

 

2. let(변수 재선언 불가능, 변수 재할당 가능)

let variable = '최초변수선언'; 
console.log(variable) //최초변수선언
variable = '변수재할당'; 
console.log(variable) //변수재할당 
let variable = '변수재선언'; 
console.log(variable) //변수재선언 -> 오류가 발생한다.

오류값: Uncaught SyntaxError: Identifier 'variable' has already been declared

3. const(변수 재선언 불가능, 변수 재할당 불가능)

const variable = '변수선언' 
console.log (variable); //변수선언 
variable = '변수 재할당' 
console.log (variable); //변수재할당 -> 불가능 
const variable = '변수 재선언' 
console.log (variable); //변수 재선언 -> 불가능​

변수 3종류 출처: https://ninearies.tistory.com/196?category=839103 [Express 999]


변수의 범위

전역변수: 특정 함수의 밖에서 변수를 선언하면 다른 코드(함수)에 이 변수가 사용될 수 있으므로 전역변수라 한다.

지역변수 : 특정 함수의 내부에 변수를 선언하는 경우, 해당 함수 내에서만 변수 사용이 가능하므로 지역변수라 한다.

 

자료형 변환이 가능하다.

데이터 형이 스크립트 실행 도중에 의해 자동으로 변환될 수 있는데 예를 들면,

var age = 35;
age = '마흔두살';

또한 문자열 +숫자 = 문자열 자료형 이라는 특징을 이용하여 다음이 가능하기도 하다.

let result = '나의 나이는 ' + 19 ;
console.log(result); //결과값 = 나의 나이는 19. 최종 자료형은 문자열이다.

할당과 참조

 

변수에 값을 저장: 할당(assignment) 저장한 값을 불러오기: 참조(reference)

초기값없이 var 또는 let 을 사용하여 선언된 변수는 undefined 값을 가지므로 이 변수에 접근할 시에 ReferenceError 예외 발생.

자바스크립트는 늘 변수를 선언할 때 변수의 값을 undefined로 초기화하는 과정을 거친다.


식별자

식별자란 자바스크립트에서 이름을 붙일 때 사용하는 단어로 변수명, 함수명 등이 있다.

식별자에는 그 값을 찾아갈 수 있는 메모리 주소값이 저장되어 있다.

식별자는 변수명 ,하나의 값을 구별할 수 있는 함수(***일급객체.값으로 평가될 수 있다.), 클래스이름이다.

 

***일급객체? 프로그래밍 언어 디자인에서, 특정 언어의 first-class citizens이란 보통 다른 객체들에게 적용 가능한 연산을

모두 지원하는 객체를 말합니다. 이러한 연산에는 보통 매개변수로 전달, 함수에서 반환 및 수정되고, 변수에 할당되는 작업이 포함.

 

식별자 명명규칙

  • 키워드를 사용하면 안 된다.
  • 숫자로 시작하면 안 된다.
  • 특수 문자는 _와 $만 허용된다.
  • 공백 문자를 포함할 수 없다.
jayKim
jayKim88
_jayKim
$jayKim
JayKim
JAYKIM
// Usable 

break //Keyword
123jaykim
hereis space
// Unusable

식별자 관례

  • 모든 언어가 사용가능하지만 알파벳 사용이 관례
  • 의미 있는 단어 사용
  • 생성자 함수의 이름은 대문자로 시작
  • 변수와 인스턴스, 함수, 메소드 이름은 소문자로 시작
  • 식별자가 여러 단어로 이루어지면 각 단어의 첫 글자는 대문자

식별자 생성시, 표기 방법

  • 낙타표기법 (CamelCase)
    • 변수는 보통 소문자 낙타표기법을 사용하지만, 첫 번째 단어는 모두 소문자이고 나머지 단어는 대문자로 표기
    • ex) numCakeDonuts / englishNumber

식별자 출처: https://ninearies.tistory.com/194 [Express 999]

변수 호이스팅 이란??gmlwjd9405.github.io/2019/04/22/javascript-hoisting.html

 

 

 

 

 

'BootCamp_Codestates > Pre Tech Blog' 카테고리의 다른 글

반복문  (0) 2020.10.28
조건문_2020.10.26  (0) 2020.10.27
함수_2020.10.26  (0) 2020.10.27
타입기초_2020.10.26  (0) 2020.10.27
문자열(String)_20201026  (0) 2020.10.27
'BootCamp_Codestates/Pre Tech Blog' 카테고리의 다른 글
  • 조건문_2020.10.26
  • 함수_2020.10.26
  • 타입기초_2020.10.26
  • 문자열(String)_20201026
JTB
JTB
웹/앱 개발 정보를 공유하고 있습니다.
  • JTB
    JTechBlog
    JTB
  • 전체
    오늘
    어제
    • All About Programming;) N
      • Computer Science
        • Terminology and Concepts
        • Network
        • Operating System
        • Database
        • Data Structure
      • Frontend
        • Javascript Essentials
        • Perfomance Optimization
        • JS Patterns
        • Next.js
        • Flutter
      • Backend
        • Node.js
      • DevOps
        • Docker & Kubernetes
      • Coding Test N
        • LeetCode N
        • Programmers
      • Tech Books & Lectures
        • Javascript_Modern JS Deep d..
        • Network_IT 엔지니어를 위한 네트워크 입문
      • Projects
        • PolyLingo_2025
        • Build Your Body_2024
        • JStargram_2021
        • Covid19 Tracker_2021
        • JPortfolio_2021
      • BootCamp_Codestates
        • TIL
        • TILookCloser
        • Pre Tech Blog
        • IM Tech Blog
        • Daily Issues and DeBugging
        • First Project
        • Final Project
        • Sprint Review
        • Good to Know
        • Socrative Review
        • HTML & CSS
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 글쓰기
    • 관리
  • 공지사항

  • 인기 글

  • 태그

    VoiceJournal
    leetcode
    TCP/IP
    How memory manage data
    Data Structure
    자바스크립트 딥다이브
    JavaScript
    모던 자바스크립트 Deep Dive
    indie hacker
    testing
    Binary Tree BFS
    polylingo
    Network
    Shared resources
    need a database
    자바스크립트
    딥다이브
    structure of os
    mobile app
    프론트엔드 성능 최적화 가이드
    js pattern
    Time complexity and Space complexity
    database
    DOM
    Operating System
    커리어
    스코프
    이벤트
    Threads and Multithreading
    CPU scheduling algorithm
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
JTB
변수_ 2020.10.26
상단으로

티스토리툴바