본문 바로가기

자바스크립트12

스코프 1. 스코프란스코프는 참조 대상 식별자(identifier, 변수, 함수의 이름과 같이 어떤 대상을 다른 대상과 구분하여 식별할 수 있는 유일한 이름)를 찾아내기 위한 규칙이다. 자바스크립트는 이 규칙대로 식별자를 찾는다. 말이 어렵다. 그 규칙은 무엇일까? 간단하다!식별자가 선언된 곳에서 가장 가까운 function 선언문을 찾으면 그곳이 바로 그 식별자가 사용되는 스코프이다.다음의 코드를 보자. 서울에서 김서방을 불렀다면 어느 김서방이 대답을 할까?var 김서방 = "전국 김서방"; function 전국() { console.log(김서방); } function 서울() { var 김서방 = "서울 김서방"; console.log(김서방); } function 부산() { var 김서방 = "부산 김.. 2020. 3. 28.
단축평가 Short-circuit Evaluation(단축 평가) 내가 이해한 단축 평가란 계속 보다보면 헷갈린다. 이해하는데 1시간 걸렸다. ㅜㅜ 내가 내린 결론은! 논리곱 연산자와 논리합 연산자는 꼭 true나 false만 리턴되는게 아니다. 단축평가(값 && 값 또는 값 || 값 )를 사용하면 ? 평가를 중단하게 된 계기가 되는 값을 반환한다! 너 땜시 .. 이 값은 보나마나 이거야! 그러니 이 평가의 결과는 너야 라고 결정하는 것이다. 아래 예제를 살펴보자. "Cat" && "Dog"; // “Dog” Cat은 Truthy이네 ... 흠 뒤에 값이 무엇인지 알아야 요기 논리곱의 평가가 가능하겠어..! 뒤에 값(Dog)이 결국 요기의 표현식을 결정하겠네..? 그러므로 요기의 결과 값은 뒤에 값(Dog)이야!.. 2020. 3. 28.
Lexical scoping Lexical scoping(어휘적 범위 지정)뜻Scope가 함수 실행시점이 아닌 함수 정의 시점에 정해진다는 의미특징변수가 어디에서 사용 가능한지 알기 위해 그 변수가 소스코드 내 어디에서 정의(선언)되었는지 고려중첩된 함수는 외부 범위(scope)에서 선언한 변수에도 접근가능C/C++, Java, 그리고 JavaScript 같이 우리가 접하는 대부분의 언어들은 Lexical Scope를 사용한다. Lexical Scope는 Static Scope라고도 불린다. 반대의 방식으로는 Dynamic Scope가 있으며 Perl, Bash Shell, APL 같은 몇몇 오래된 언어들이 사용하는 방식이다. 두 방식의 정의는 다음과 같다.Lexical scope: use environment where funct.. 2020. 3. 27.
this This자바스크립트의 함수는 호출될 때, 매개변수로 전달되는 인자값 이외에, arguments 객체와 this를 암묵적으로 전달 받는다.function square(number) { console.log(arguments); console.log(this); return number \* number; } square(2);자바스크립트의 this keyword는 Java와 같은 익숙한 언어의 개념과 달라 개발자에게 혼란을 준다.Java에서의 this는 인스턴스 자신(self)을 가리키는 참조변수이다. this가 객체 자신에 대한 참조 값을 가지고 있다는 뜻이다. 주로 매개변수와 객체 자신이 가지고 있는 멤버변수명이 같을 경우 이를 구분하기 위해서 사용된다. 아래 Java 코드의 생성자 함수 내의 this.. 2020. 3. 27.