728x90 분류 전체보기89 [JS][스코프] 중첩 스코프 와 오류, 정리하기 중첩 스코프 스코프는 확인자 이름으로 변수를 찾기 위한 규칙의 집합이라고 앞서 말한 바 있다. 그러나 대개 고려해야할 스코프는 여러개다. 하나의 블록이나 함수는 다른 블록이나 함수안에 중첩될 수있으므로 스코프도 다른 스코프안에 중첩될 수있다. 따라서 대상 변수를 현재 스코프에서 발견하지 못하면 엔진은 다음 바깥의 스코프로 넘어가는 식으로 변수를 ㅊ자거나 글로벌 스코프라 부르는 가장 바깥 스코프에 도달할 때까지 계속한다. function foo(a) { console.log(a + b); } var b = 2; foo(2); // 4 b에 대한 RHS 참조는 함수 foo안에서 처리할 수 없고, 함수를 포함하는 스코프에서 처리한다. 엔진과 스코프의 대화를 다시보자. 엔진 : 이봐 foo 스코프, b에 대해 .. 2022. 2. 15. [JS][스코프] 스코프 이해하기 스코프 이해하기 스코프를 좀더 재미있고 쉽게 설명하기 위해 대화 형식으로 스코프를 보자. 먼저 등장 인물을 살펴보자. 출연진 프로그램 "var a = 2;"를 처리할 주역들을 만나보자. 그래야 나중에 들을 대화를 이해할 수 있다. 엔진 : 컴파일레이션의 시작부터 끝까지 전 과정과 자바스크립트 프로그램 실행을 책임진다. 컴파일러 : 엔진의 친구로, 파싱과 코드 생성의 모든 잡일을 도맡아 한다. 스코프 : 엔진의 또 다른 친구로, 선언된 모든 확인자(변수) 검색 목록을 작성하고 유지한다. 또한, 엄결한 규칙을 강제하여 현재 실행 코드에서 화인자의 적용 방식을 정한다. 만약 자바스크립트가 어떻게작동하는지 완전히 이해한다면 엔진처럼 생각해보자. 그들이 던지는 질문을 던지고 그들과 똑같이 답해보자. 앞과 뒤 프로.. 2022. 2. 15. [JS][스코프] 스코프란? 스코프란 무엇인가 프그래밍 언어의 기본 패러다임중 하나는 변수에 값을 저장하고 값을 가져다 쓰고 수정하는 것이다. 이 기능은 프로그램에서 상태를 나타낼 수 있게 해준다. 이와 같은 개념이 없다면 프로그램은 상당히 제한적이고 지극히 심심한 작업만 할 수 있을 것이다. 그러나 변수를 프로그램에 추가하면 다음과 같은 재미있는 질문이 생긴다. 변수는 어디에 살아있는가? 다른 말로 하면 변수는 어디에 저장되는가? 필요할 때 프로그램은 어떻게 변수를 찾는가? 이 질문을 통해 알 수 있는 것은 특정 장소에 변수를 저장하고 나중에 그변수를 찾는 데는 잘 정의된 규칙이 필요하다는 점이다. 바로 이런 규칙을 '스코프'라고 한다. 그렇다면 스코프 규칙은 어디서 어떻게 정의될까? 컴파일러 이론 여러 언어를 다루어 봤다면 자명.. 2022. 2. 15. [프로그래머스] 기능개발 - javascript https://programmers.co.kr/learn/courses/30/lessons/42586?language=javascript 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 현재 개발이 진행중인 프로그램의 배열이 빌때까지 반복문을 돌아줍니다 개발 속도를 1회 반복할때마다 전부 저해주고, 0번 인덱스의 개발이 완료되었으면 배열에서 제거하고 다시 0번인덱스를 화인하여 0번인덱스의 기능이 개발이 왼료되지 않았을때까지 제거하고 카운트를 더해줍니다. 카운트가 0보다 크다면 정답배열에 카운트를 넣어줍.. 2022. 2. 14. [JS][문법] Switch switch if ... else if ... else 문의 사슬을 짧게 해주는 switch 문을 간략히 살펴보자. switch (a) { case 2: // .. break; case 42: // .. break; default: // ... } 보다시피 switch 표현식의 평가 결과를 각 case 표현식의 값들과 매치한다. 죽 내려가다 매치된 case 절의 코드를 실행하기 시작하여 break 문을 만나기 전이나 switch 블록의 끝까지 계속 나아간다. 여기까진 지나치게 평범하지만 switch에는 우리가 몰랐을 기벽이 있다. 첫째, switch 표현식과 case 표현식 간의 매칭 과정은 === 알고리즘과 똑같다. 예제처럼 case 문에 확실한 값이 명시된 경우라면 엄격한 매치가 적절하다. 그러나 강.. 2022. 2. 14. [JS][문법] 연산자 우선순위 연산자 우선순위 자바스크립트에서 &&, || 연산자는 단순히 true/false를 반환하는게 아니라, 독특하게도 피연산자 중 하나를 선택하여 반환한다. 그나마 피연산자가 2개뿐이고 연산자가 하나밖에 없을 경우는 결괏값을 쉽게 예상할 수 있다. 하지만 연산자가 2개, 3개 이상이라면? var a = 42; var b = "foo"; var c = [1, 2, 3]; a && b || c; a || b && c; 두 표현식의 결과를 이해하려면 표현식에 연산자가 여러 개 있을 경우 어떤 규칙으로 처리되는 지 알아야 한다. 바로 이 규칙을 '연산자 우선순위'라고 한다. 앞에서 한번 봤던 예제다. var a = 42, b; b = (a++, a); a; // 43 b; // 43 ()를 없애면 어떻게 될까? b는.. 2022. 2. 14. 이전 1 ··· 4 5 6 7 8 9 10 ··· 15 다음 728x90