본문 바로가기

Programming Language/Javascript,Typescript

(6)
자바스크립트 클로저(Closure) 알아보기 위키백과에서의 정의는 다음과 같다 컴퓨터 언어에서 클로저(Closure)는 일급 객체 함수(first-class functions)의 개념을 이용하여 스코프(scope)에 묶인 변수를 바인딩 하기 위한 일종의 기술이다 https://ko.wikipedia.org/wiki/%ED%81%B4%EB%A1%9C%EC%A0%80_(%EC%BB%B4%ED%93%A8%ED%84%B0_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D) 클로저 (컴퓨터 프로그래밍) - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 컴퓨터 언어에서 클로저(Closure)는 일급 객체 함수(first-class functions)의 개념을 이용하여 스코프(scope)에 묶인 변수를 바인딩..
호이스팅과 type of null 버그에 대해 알아보자 1. 호이스팅은 호이스트를 떠올리면 쉽다 저 사진에 있는게 호이스트다(Hoist) 좀 더 쉬운 말로는 크레인이라고 생각하면 되는데, 어쨋건 호이스트는 어떤 물건같은것을 끌어올리는 역할을 하는 기계이다. 자바스크립트의 호이스팅은 자바스크립트 Parser가 하는 일종의 '끌어올리기'를 의미한다 console.log(num); // 호이스팅한 var 선언으로 인해 undefined 출력 var num = 6; 자바스크립트의 웃긴 점은 선언을 하지도 않은 변수를 사용해도 에러가 안난다는 것이다. 해당 예제에서는 var num = 6 이란 선언 + 할당 부분을 끌어올린 것이다. 이때 var의 특성이 나오는데, 일단 var는 undefined로 우선 초기화가 되기 때문에 이 출력 결과가 나오는 것이다. 즉 에러를 ..
Javascript - 자바스크립트는 어떻게 실행되는가? (AST 등) 자바스크립트 초보자와 숙련자를 가르는 질문 하나. (라고 한다) Q : 자바스크립트는 인터프리터 언어입니까? 초보자 A : 네 자바스크립트는 대표적인 인터프리터 언어로서 한줄씩 위에서부터 컴퓨터가 읽어나가는 방식으로 되어있고, 컴파일러 언어는 자바 예로 들수 있습니다 두 방식의 차이점은 어쩌고저쩌고.... (부끄럽게도, 이 글 쓰기 전 본인의 의견이다) 숙련자 B : 어... 일반적으로 그렇게 분류가 되기는합니다만, 상황에 따라 그렇지 않을수 있습니다. 인터프리터와 컴파일러가 혼합되었다고 보는게 더 정확한 의견입니다 --------------- 자바스크립트를 접한지 만 1년이 거의 다 되어가지만 정작 어떻게 내가 작성한 코드가 실행되는지는 생각해본적이 없었다. 물론, 자바스크립트 개발자가 로우레벨단을 뜯..
This binding 과 화살표 함수 공시생 시절의 binding이란 이거였다. 아마 요즘도 노량진이나 신림동 인쇄하는곳 가면 스프링 바인딩 해달라고 하면 일반 책들을 저렇게 만들어줄 것이다. 딱 봐도 바인딩은 '뭔가를 연결하는 것' 이라는 느낌이 오지 않는가? 바인딩에 관한 자세한 정보는 아래 블로그를 참조하면 될 것 같다. https://velog.io/@proshy/JS-%EC%83%81%ED%99%A9%EC%97%90-%EB%94%B0%EB%A5%B8-this-%EB%B0%94%EC%9D%B8%EB%94%A9 최근 하고 있는 테스트코드 관련 학습에서 이 this 바인딩과 화살표 함수 관련한 적절한 예가 나와서 올려보고자 한다. tweetRouter 함수이다. (외부에서 tweetController를 받아온다) tweetControll..
반복문 중괄호 생략, 한줄에 코드 두줄(?)넣기 JS뿐만 아니라, 다른 언어에서도 반복문 {} 은 생략가능! 예를들면, for(let i = 0; i < array.length; i++) { console.log('hello world!') } 라는 간단한 for 반복문이 있다고 한다면, 그냥 for(let i = 0; i < array.length; i++) console.log('hello world!') 써버려도 상관 없다는 소리이다. 사실 이게... 논리적으로도 맞는 소리이다. 하지만 주의사항이 있는데, 이걸 누군가는 '오 깔끔하네' 라고 할수도 있고, 아니면 두줄로 나누는 대신 한줄이 길어지니 '그냥 줄을 내려버리자' 고 기존의 방법을 고수할 수도 있다. 현업에서는 이런것도 아마 코딩스타일에 따라 다를텐데, 사수의 스타일에 맞춰주도록 하자. ..
틸트(~) 연산자와 ~~ 알아보기 현재 목표는 프로그래머스의 0레벨 100문제를 전부 풀어보는것인데 현재 100개중 45개를 푼 상태이다. 그래서 곧 고지가 눈 앞인데... 다른사람의 풀이를 보다가 ~~ 연산을 사용해서 몫을 구하는 사람들이 있어 틸트(~)가 뭔지 알아보다가 적는 포스팅이다. 이진수와 Not 연산 나는 인간이니까 십진수가 거의 디폴트로 박혀있는 상태이지만, 컴퓨터는 이진법(0,1)로 연산한다는걸 마음속에 저장하면서 프로그래밍을 배워야 한다. JS에서 ! 를 붙이면 NOT이 된다는건 아는데, 그럼 물결(틸트)는 뭐냐? 이진수로 바꾸고 NOT을 붙인다는 소리인데... 사실 잘 와닫지 않는다. 예를들어 1을 틸트연산자 ~1을 출력하면 -2가 출력되는데, 이 원리를 간단히 알아보자면 1을 이진수로 바꾸면 00000001(2) 인..