기록을 남겨야겠다고 오랫동안 생각해왔는데, 제일 좋은 곳이 어디일까 하다가 만만한(..) 티스토리를 다시 사용하기로 했다. 군대에서 배운 게 하나 있다면, 최고의 선택지를 선택하기 위해 아주 오래 고민하는 것보다, 일단 하나를 선택해서 시작해 보는 것이 좋다는 것이다. 특히 언제든지 선택지를 바꿀 수 있는 거라면. 그래서 velog도 있고 medium도 있고 github.io도 있고 notion(+oopy)도 있지만 전부터 사용해서 그래도 방문자가 약간은 있는 티스토리로 결정했다. 군대에서 뵈었던 멋진 분들도 티스토리 블로그를 사용하고 있기도 했고.. 사실 노션으로 일기와 배운 내용을 정리하고 있긴 했지만, 외부에 뭔가 '내가 이런 걸 하고 있다'라고 알리고 의견을 나눌 채널이 하나쯤 필요하다고 생각했다..
https://poiemaweb.com/es6-block-scope let, const | PoiemaWeb ES5까지 변수를 선언할 수 있는 유일한 방법은 var 키워드를 사용하는 것이었다. var 키워드로 선언된 변수는 아래와 같은 특징이 있다. 이는 다른 언어와는 다른 특징으로 주의를 기울이지 않으면 poiemaweb.com ES6의 변경점을 주제별로 작동 원리까지 포함해 작성한 좋은 글이 있었다. let: 블록 레벨 스코프를 가짐 들어가기 전에: 배경지식 - 자바스크립트 실행 컨텍스트의 원리https://poiemaweb.com/js-execution-context Execution Context | PoiemaWeb Execution Context(실행 컨텍스트)는 scope, hoisting,..
6장. 객체지향 프로그래밍 공통된 함수 객체(메서드)를 객체마다 생성하면 메모리 낭비 프로토타입 객체에 함수를 정의하자. 더글라스 크락포드식 메서드 정의 방법 Function.prototype.method = function (name, func) { this.prototype[name] = func; } function Person(arg) { this.name = arg; } Person.method("setName", function (value) { this.name = value; }) Person.method("getName",function () { return this.name; }) let me = new Person("me"); let you = new Person("you"); con..
진도가 느려진다. 이해가 안 가더라도 다시 찾아올 수 있도록 정리만 해 놓고 빠르게 넘어가자 실행 컨텍스트 c의 함수 호출 스택과 비슷 현재 실행되는 컨텍스트에서 이 컨텍스트와 관련 없는 실행 코드가 실행되면 (전역 코드, eval() 함수로 실행되는 코드, 함수 안의 코드) 새로운 컨텍스트가 생성되어 스택에 들어가고 제어권이 그 컨텍스트로 이동한다. 생성 과정 1. 활성 객체(=변수 객체) 생성 2. argument 객체 생성 (활성 객체는 arguments 프로퍼티로 이 객체 참조) 3. 스코프 체인 생성 (생성된 활성 객체가 스코프 체인 맨 앞에 추가) 4. 변수 생성 (instantiation), 값이 넘겨지지 않았으면 undefined가 할당 주의: 초기화(initialization)은 나중에 ..
this 바인딩 메서드(객체의 프로퍼티 중 함수인 것): 해당 메서드를 호출한 객체 (메서드를 가진 객체가 아님!!) 함수: 전역 객체 (브라우저에서 실행하는 경우 window 객체, Node.js와 같은 자바스크립트 런타임 환경에서는 global 객체) 내부 함수(함수 안의 함수): 정의되지 않음 -> let that = this; 사용, 명시적인 this 바인딩을 위한 call/apply/bind var val = 100; let myObj = { val: 1, func1: function () { this.val += 1; console.log('func1() called. this.val : ' + this.val); func2 = function () { this.val += 1; console..
함수 선언문 function funcName(x, y) { return x + y; } 내부적으로 함수 표현식으로 변환됨 let funcName = function funcName(x,y) { return x + y; }; 함수 표현식 함수 리터럴로 만든 함수를 변수에 할당하여 함수를 생성하는 것 let funcName = function (x,y) { return x + y; }; 이름을 안 붙일수도 있고 (익명 함수 표현식), 이름을 붙일 수도 있음 (기명 함수 표현식). 단, 이름을 붙여도 함수 내부에서 재귀적으로 호출하거나 디버거에서 구분을 위해 사용하는 것만 가능하고, 외부에서 해당 이름으로 호출할 수 없음. Function() 생성자 new Function(arg1, arg2, ... , ar..
총 281페이지: 123/45/67 챕터 데이터 타입: typeof 키워드로 확인 기본 타입 - number (실수형만 존재), string (문자열 리터럴은 특정 글자 재할당 불가), boolean, undefined, null 참조 타입 - object: array, function, 정규표현식 object 단순히 프로퍼티(key: value 형태)를 저장하는 컨테이너 (like 해시) 생성: 1. Object() 생성자 함수 2. 객체 리터럴 3. 생성자 함수 for in 문: 객체 프로퍼티 반복 delete 키워드: 객체 프로퍼티 삭제 변수는 참조 타입으로 객체를 가리킴 객체 비교 동등 연산자 == : 객체의 참조값 비교 함수 호출 call by value: 기본 타입 -> 값 복사 call by..
문제 상황: recyclerView / listView 에서 아이템을 클릭하면 해당 아이템의 인덱스를 인텐트에 담아 액티비티를 전환하는 것을 구현하려고 했는데, 전환 후 인텐트에서 항목 인덱스를 받아오지 못함 recyclerView가 복잡해서 이것저것 시도해 봤지만 모두 실패, 구조가 더 단순해서 이해하기 쉬운 listView로 구현을 시도함. 같은 문제 발생. 처음에는 인텐트에 position 값이 제대로 안 담긴다고 생각했으나, 여러 글을 참고해서 구현을 바꿔보다 position값은 정확하게 띄워진다는 것을 발견 인텐트의 hasExtra 함수로 해당 key값의 데이터가 존재하는지 확인할 수 있다는 것을 알게됨 체크해보니 해당 key값은 존재하나 계속 null을 리턴함 https://yujuwon.ti..
formatter가 작동이 안 돼서 vscode 설정을 초기화하고 재설치함 초기화 참고 http://blog.naver.com/PostView.nhn?blogId=hong9580&logNo=221717800091 visual studio code 환경 설정 초기화 vs code 초기화 리셋vs code에 이것저것 설치하다보면 갑자기 에디터가 이상해 질 때가 있다.그래서 삭제하... blog.naver.com 재설치 후 기본 설정 참고 https://kyc0517.tistory.com/41 Visual Studio Code (VS Code) PS용 환경설정 VS Code Problem Solving용 환경설정 작업 당시 운영체제: Ubuntu 18.04 64bit VS Code를 활용하여 백준, 알고스팟,..