본문 바로가기
fastcampus

[패스트캠퍼스 수강 후기] 프론트엔드 인강 100% 환급 챌린지 4 회차 미션

by 새우하이 2020. 9. 10.

변수와 상수

프로그래밍시 중요한역할을 한다.

프로그래밍이 실행되면서 프로그램이 사용되는 값들을 잠시 메모리에 보관했다가 다시 값을 사용할 때 보관소 역할을 한다.

if (( 5 + 10 ) % 3 === 0){
    console.log('안녕하3');
}

if (( 5 + 10 ) % 3 === 0){
    console.log('5구5구~');
}

해당 코드를 볼 때 5 + 10 을 누군가 입력한 값으로 사용한다고 가정을 해보자.

해당 코드에서 ( ) 의 값이 어떤 숫자가 올지 모르는 상황이라고 가정을 하는 것이다.

이 조건문에서 매번 5 + 10 의 결과를 계산 할 필요없이 ( ) 사이에 올 값을 어디엔가 보관해 두면

첫째로 이 코드가 의미하는 바가 정확해지고

컴퓨터가 불필요한 일을 하지 않을 수 있다.

이럴때 사용하는것이 변수와 상수이다.

변하지 않을 때 사용하는것이 상수이고

변하는 값을 담을 때 사용하는것이 변수라고 볼 수 있다.

const 상수를_지칭하는_이름;

상수 선언 방법

이 이름을 앞서 학습했던 식별자라고 한다.

const sum = 5 + 10;

if (sum  % 3 === 0){
    console.log('안녕하3');
}

if (sum  % 3 === 0){
    console.log('5구5구~');
}

예제를 살펴보면

첫 줄에서 sum 이라는 이름을 가진 상수에 5+10이라는 값의 결과 값을 할당했다.

그리고 아래에서 (5+10) 대신 sum이라는 상수를 사용한다.

상수는 한번 값이 정해지면 변경이 불가능하기때문에 선언과 동시에 값 할당이 필요하다

let 변수를_지칭하는_이름;

변수를 선언하는 방법

let 이라는 키워드를 이용해서 변수를 선언해주면 값이 할당되지 않은 상태를 의미하는 undefined 라는 값을 가지게 된다.

이렇게 선언된 변수에 값을 넣는 방법은 간단하다

= 연산자를 이용해서 우변의 값을 좌변의 변수에 할당 할 수 있다.

변수_이름 = 값;

상수_이름 = 값;

상수도 마찬가지로 선언과 동시에 할당이 가능하다.

선언이 안된 변수 식별자에는 값을 할당 할 수 없다.

const sum = 5 + 10;
let result = false;

if (sum  % 3 === 0){
    console.log('안녕하3');
    result = true;
}

if (sum  % 3 === 0){
    console.log('5구5구~');
    result = true;
}

console.log(result);

result 는 선언이 되면서 false라는 값이 할당되게 된다. 하지만 조건문(if)에 따라 result라는 변수 식별자의 값이 바뀔 수 있다.

sum 의 값이 3이나 5로 나눠 떨어지게되면

result의 값은 true로 바뀔 것이다.

변수의 유효 범위 (scope of variables)

변수의 유효 범위는 변수가 선언되고 사용되는 공간이 어느 범위에서 유효한지에대해 정해주는 기준이다.

const, let의 유효범위

const,let 의 유효범위는 block scope라는 유효범위를 가진다

블록이라 함은

  • {} 중괄호로 되어있는 공간 내에 선언된 그 공간 내에서만 사용 가능하고 밖에서는 그 변수에대해 알 수 없다.

///블럭
{
    const name = 'jiwon';
    console.log(name);
}

이 코드를 실행 해보면 console.log(name) 이 문제없이 실행 된다.

  • 하지만 이 block scope를 벗어난 곳에서 name이라는 상수 식별자를 사용하려고 하면

///블럭
{
    const name = 'jiwon';
}
console.log(name);

정의 되지 않았다고 판단하게된다.

하지만

let age = 25;
{
age++;
console.log(age);
}
console.log(age);

블럭의 바깥에서 먼저 선언된 변수를 블럭 내부에서 사용하는것은 가능하다.

  • 블럭은 중첩사용이가능하다
{
    {
        {
            //이렇게
        }
    }
}

var의 유효범위

함수 스코프 (fucntion scope)

var a = 0;

(fucntion () {
    a++;
    console.log(a);
})();

console.log(a);

(function(){
    var b = 0;
    console.log(b);
})();

b++;

예제를 보면 함수 밖에서 선언된 변수a 는 블럭안에서 사용이 가능하지만

함수내에서 선언된 b라는 변수는 밖에서 사용할 수 없다.

따라서 b++; 구문에서 에러가 날것이다.

하지만 블록 스코프에서는 어떻게 동작할까?

var c = 0;
{
    c++;
    console.log(c);
}
{
    var d = 0;
    console.log(d);
}

console.log(d);

var는 함수레벨 스코프 이므로

{ } 블록에서는 문제없이 다 실행이 된다.

즉, 블록스코프에서는 스코프의 의미를 갖지 않는다는 뜻이다.

 

 

 

해당내용은 아래 링크 에서 수강할 수 있다.

프론트엔드 개발 올인원 패키지 with React Online. 👉 https://bit.ly/2ETLEzm

 

프론트엔드 개발 올인원 패키지 with React Online. | 패스트캠퍼스

성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.

www.fastcampus.co.kr

 

댓글