본문 바로가기

javascript

(5)
this 나는 this가 javascript의 encapsulation로 가는 시작점이라고 생각한다. javascript에서 this가 어려운 이유는 javascript는 prototype 타입 언어이며 까다로운 scope 정책 때문이라고 생각한다. 자바 같은 경우는 private 접근지정자로 명확한 scope와 encapsulation을 지원하기 때문에 this 때문에 혼란스러울 일이 없다. public class Clazz { private String foo; private int bar; public String getFoo() { return this.foo; } public int getBar() { retrun this.bar; } } // scope가 너무 명확해 this가 헷갈릴 여지가 없다. t..
cytoscape 지난 해 11월 부터 아이들 어린이집 근처 카페에서 일주일에 2일 정도 front-end 개발 취업 준비와 습득한 내용을 웹서버(aws lightsail)로 구성 했다. http://13.209.116.161:3000 javascript는 서로 개념이 얽혀있어 하나를 이해하지 못하면 연쇄해서 이해를 하기 힘들고 시작점을 어디로 두어야 할지 어려워서 처음엔 중구난방으로 공부했다. 예를들어 this 하나만 이해하려면 window(global), context, call, apply, bind, scope, scope chain, new, method와 연관이 많아 막히는 부분이 많았고 좀 더 깊게 갈 수록 더 많은 점이 궁금했고 (es6 는 덤) 이를 정리하기위해 aws로 웹서버도 구성했고 기술블로그도 시작..
console.log Console.log내가 사용 하는 console.log 개발 스타일에 대해 개선하고자 정리하고자 한다.console.log 는 내가 개발 중인 프로세스의 구조 나 정합성을 확인 하기 위해 사용한다. 빨리 확인 하고 싶은 마음에 내가 실제 사용하는 코드이다.console.log(변수명1); console.log(변수명2); // 연속console.log(this); console.dir(this); // 객체의 구조를 자세히 보고 싶을 때 활용console.log('------------'); // log 를 많이 찍어 구간을 확인 하기 위한 방법없어 보이기도 하고산재되어 지저분해 보이기도 하고 혼동되고어디에서 출력했는지 이해하기 위한 시간이 소요 된다.이런 습관을 고치고 싶어 포맷을 정리 해본다. (내..
Lexical Scope + implicit global Lexical Scope + implicit global Lexical Scope + implicit global 조합된 코드는 Lexical Scope 를 이해하는 과정에서 보는 것보다 Lexical Scope 를 이미 이해한 상황에서 보는 것이 좋다. var x = 1;function foo() { x = 0; bar(); }function bar() { console.log(x); }foo(); bar();앞서 작성했던 글에서 본 lexical scope 에 따르면 아래와 같아야 한다.foo(); // 1 bar(); // 1결과는 아래와 같다.foo(); // 0 bar(); // 0 함수 foo() 안에 선언된 x는 함수 블럭 스코프에 할당(선언도 마찬가지)됐음에도 var 키워드가 없기 때문에 ..
Lexical Scope Lexical Scope lexical scope는 간결하게 정의 하기 힘들다. 하지만 javascript 를 다룰 수 있는 개발자라면 이미 알고 있는 개념이며 단지 이를 말로 설명하기 어려울 뿐이다. 내 생각엔 lexical scope는 javascript 가 선택한 scope 정책에 의한 scope chain 의 일부분일 뿐이다. 이해 하기 어려운 이유 중 하나는 static scope 를 lexical scope 라고도 부르는 이유도 있다. lexical scope 대신 static scope 이라 표현하고 dynamic scope 와 함께 비교 해보자. var x = 1; function foo() { var x = 0; bar(); } function bar() { console.log(x); ..