다음에 바로 기억나게 하기위해 한번더 정리! - 함수 선언식 : 함수 선언식으로 선언된 함수는 나중 사용을 위해 저장되고, call할떄 실행된다. ex) function foo() {} - 함수 표현식 : 함수를 표현식으로 사용하여 정의하고, 함수 표현식은 변수로 저장될 수 있다. ex) const foo = function () {} - 차이점 함수 선언식은 코드가 실행되기 전에 로드되어서 호이스팅이 발생하지만 함수 표현식은 인터프리터가 해당 코드 줄에 도달 할 때만 로드한다. 결국, 함수 표현식은 호이스팅되지 않아서, 정의 된 범위에서 로컬 변수의 복사본을 유지할 수 있고 가독성이 더 높다는 장점이 있다. 이런 장점 말고 함수 표현식의 다른 장점도 알아보자. 1. 클로저 사용가능 : 클로저란? 함수가..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsO3Kv%2Fbtq1WJv8EMZ%2FkufV3dA1GKRi6BLgkBqhWk%2Fimg.png)
GIF는 움직이는 이미지로써, 이미지 처럼 바로 첨부하고 사용할 수 있다는 장점을 가져서 인기가 높다. 하지만, 이 기술은 30년이 넘은 기술로... 비효율적이다. 위 그림을 보자. 육안으로는 이미지의 품질이 별반 다르지 않게 느껴진다. 하지만.. 용량은 10배이상 차이가난다! 즉, GIF는 불필요하게 대역폭을 낭비해서 엄청나게 많은 전송량을 발생시킨다. 그 이유는, GIF의 경우, 256색을 표현할 수 있는 컬러 팔레트와, 각 프레임의 모든 픽셀에 대한 정보를 무손실 압축 데이터로 담고 있는데, H.264같은 비디오 포매ㅅ은 기본적으로 손실 압축이고, GIF와 비교해서 다양한 최적화 기술이 들어간다. 그래서, GIF는 압축효율이 낮아서 불필요하게 대역폭을 낭비한다! 다른 이유도 있다. 압축된 비디오를 ..
행동에서는 꾸물거리지 말고, 대화에서는 횡설수설하지 말며, 생각에서는 모호하게 하지 말라. 너의 혼이 자체 속에만 갇혀 있게 하지도 말고, 자신의 궤도를 이탈해서 제멋대로 날뛰게 두지도 말라. 너의 삶에서 어느정도 여유를 가져라. 사람들이 너를 죽이려고 하고, 갈기갈기 찢어놓으려고 하며, 온갖 저주를 퍼붓는다고 할지라도, 그런 것들이 네가 순수하고 지혜로우며 건전하고 정의로운 사고를 유지해 나가는 것과 무슨 상관이 있단 말이냐. 어떤 사람이 맑고 시원한 물이 솟아나는 샘으로 가서 그 샘을 저주한다고 해도, 그 샘에서는 계속해서 맑고 시원한 물이 솟아나온다. 그 사람이 흙이나 오물을 그 샘에 던져 넣어도, 샘은 그것들에 의해 오염된 채로 있지 않고, 얼마 후면 그것들을 분해해서 씻어내 버린다. 그렇다면 어..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnJTze%2Fbtq1R8JDIKp%2FgPUeI3ILRU4pT5WifAh3Kk%2Fimg.jpg)
함수 vs 모듈에서 모듈 vs 라이브러리가되고.. 라이브러리 vs 프레임워크로 비교대상이 넓혀졌다. 더 위는 없겠지..? - 프레임워크 (내 코드가 사용된다.) 프레임워크는 뼈대나 기반구조를 뜻한다. SW에서의 프레임워크는 '소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합"이라 할 수 있다. 즉, 완성된 어플리케이션이 아니라, 그 안에서 프로그래머가 코드를 완성시키는 작업을 하는 것이다. - 라이브러리 (내 코드가 사용한다.) 단순 활용가능한 도구들의 집합이다. 개발자가 만든 클래스에서 호출하여 사용, 클래스의 나열로 필요한 클래스를 불러서 사용하는 방식이다. 즉, 프레임워크와 라이브러리는 어플리케이션의 flow control에 대한 주도성이 누구에게 있느나의 관점에서 ..
ECMA script란, ECMA-262 기술 규격에 따라 정의하고 있는 표준화된 스크립트 프로그래밍 언어이다. (ECMA라는 기관이 만들어서 ECMA임.) 넷스케이프 브라우저 뿐만 아니라, 다른 웹 브라우저들에서 정상적으로 동작하게 하기 위해서, 즉, 자바스크립트를 표준화하기 위해서 만들어진, 자바스크립트의 새로운 이름이다. 줄어서 ES라고도 부른다.
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPHIPb%2Fbtq1QmVmYYN%2FELh14loY9s64Wywk9r7Xh1%2Fimg.gif)
- em em은 이 단위가 적용된 엘리먼트의 font-size에 비례한다. 예를 들어 보자! div에 width: 2em을 줬더니 40px이 되어있다. 왜냐하면 해당 엘리먼트의 font-size가 이미 20px으로 설정되어 있기 때문이다. 만약 해당 엘리먼트에 font-size를 따로 설정해준적이 없다면, 기본값인 font-size: inherit;에 따라서 부모의 15px를 물려받아 사용된다. 위 예제에서는 2em이 30px이 될 것이다. em을 사용하면, pixel보다 상대적으로 더욱 유연하게 처리할 수 있어서 조건에 맞게 length를 조절할 수 있다. 하지만 em을 선호하지 않는 사람도 있다. 퍼블리싱을 할 때, 디자인의 변경 또는 요구사항 변경을 이유로 글자크기나 다른 요소들이 바뀌는 경우가 많..
1. 모듈 : 데이터, 함수, 클래스 등이 담겨져 있는 파일, import할 수 있다. 같은 기능의 함수를 한 파일에 모아놓은 것. 모듈은 의존하는 다른 부분과 다른 모듈이 사용할 기능을 지정하는 프로그램의 한 부분이다. 사용하기 쉽고, 코드를 캡슐화 한다. 모듈은 서로를 로드하고 기능을 위해 가져오기 또는 내보내기를 할 수 있다. 2. 라이브러리 : 자주 사용되는 로직을 재사용하기 위해 편리하도록 정리한 코드들의 집합 ex) jQuery
보통 프로그래밍 언어에서 메모리 생명 주기를 말하면 다음과 같다. 1. 필요한 메모리 할당 2. 할당된 메모리 사용 (읽기, 쓰기) 3. 해당 메모리가 필요 없어지면 해제 자바스크립트에서는 값 초기화, 함수호출 시에 메모리가 할당되고, 할당된 메모리가 더 이상 필요하지 않은 시점에 메모리를 해제한다. C, C++ 처럼 로우레벨 언어들은 수동으로 메모리를 직접해제 해주어야하지만, 자바스크립트나 파이썬과 같이 하이 레벨언어는 GC (가비지 컬렉션)이라는 자동 메모리 관리 형식을 활용한다. 가비지 컬렉터의 목적은 메모리 할당을 모니터링하고, 할당된 메모리의 블록이 더 이상 필요하지 않은 시점을 확인하여 회수하는 것이다. 하지만, 항상 필요 없어진 메모리만을 해제한다고 확신은 할 수 없기 때문에, 안전하지만 완..