javascript 스코프에서 가리키는 변수 찾기 연습

🐶·2021년 5월 29일
0

개념 정리

목록 보기
8/41

스코프가 중첩되어 있을 때, 각 변수가 가리키는 값이 어떤게 헷갈릴 때는 아래 4가지 내용을 꼭 체크할 것!

1. 전역/지역 스코프 각각 확인하기
2. 전역/지역 스코프에서 선언된 변수 있는지 확인하기
3. 변수 접근 가능: 안쪽 스코프 --> 바깥 스코프
4. 변수 우선순위: 지역> 전역


let x = 30; //전역변수 x, 
function get () {
  return x; //지역에서 x 선언 안 됨.
}

let result = get(20); //x=30
result; // 30

let x = 30;
function get (x) { 
  return x; ////get함수에 매개변수 x가 선언되어 있음. 즉 get함수가 반환하는 x는 전역 스코프의 x가 아니라, get함수 스코프에 선언된 별도의 매개변수 x입니다.
}

let result = get(20);
result; // 20

let x = 30;

function get () { return x; } //지역에서 x 선언 안 됨.
function set (value) { let x = value; } // 지역에서 x 선언 됨.

set(10); //set함수를 호출해도 그 안에서 별도로 지역x가 선언되어져 있으므로 전역 x에 영향이 없음.
let result = get(20); // get에서 x는 별도 선언 안 되어 있어서 전역x를 따름
result; //30

let x = 30;

function get () { return x; } //지역에서 x선언 안 됨.
function set (value) { x = value; }//지역에서 x선언 안 됨.

set(10); //전역 x에 영향 있음. x=10 할당 됨.
let result = get(20); //get에서 x는 별도 선언 안 되어 있어서 전역x를 따름
result; //10

let x = 10;

function outer () { //지역에서 x선언 됨.
  let x = 20;
  function inner () {//지역에서 x선언 안 됨. 바깥 지역의 x를 따름.
    return x;
  }

  return inner();
}

let result = outer();
result; //outer의 리턴값이므로 20

let x = 10;

function outer () { //지역에서 x 선언 됨.
  let x = 20;

  function inner () { //지역에서 x선언 안 됨. 바깥 x를 따름
    x = x + 10;
    return x;
  }
  inner();
}

outer(); 
let result = x; //outer함수를 호출해도 그 안에서 별도로 지역x가 선언되어져 있으므로 전역 x에 영향이 없음. 따라서 10 출력

let x = 10;

function outer () { //x선언 안 됨. 전역x를 따름.
  x = 20;

  function inner () {//x선언 됨. 전역 x에 영향 없음
    let x 
    x = x + 20; //x는 undefined인 상태에서 숫자 20과 더했으므로 x+20을 하면 NaN
    return x; //NaN
  }
  inner();
}

outer(); 
let result = x; // 20

let x = 10;

function outer () {//x선언 안 됨. 전역x에 영향 있음.
  x = 20;
  function inner () {//x선언 안 됨. 전역x에 영향 있음.
    x = x + 20;
  }
  inner();
}

outer();
let result = x; //40
profile
우당탕탕 개발일기📝🤖

0개의 댓글