자바스크립트 코드를 짜다가 일일이 세미콜론을 붙이는 것이 번거롭게 느껴졌다. 그러고 보니 어디서 세미콜론 끝에 안 붙여도 된다는 소리를 들은 거 같다. 그렇지만 세미콜론을 쓰는 이유도 있을 거 아니야? 세미콜론을 써야 할까 말아야 할까? 자바스크립트의 세미콜론 자바스크립트는 세미콜론으로 문장 끝을 구별한다. 하지만 세미콜론을 문장 끝에 붙이지 않아도 구문 오류를 뱉지 않는다. 세미콜론을 사용하지 않을 경우 인터프리터가 '문장 끝이라고 생각되는 지점'에 세미콜론을 자동으로 붙여주기 때문이다. 이 기능을 세미콜론 자동삽입(ASI, automatic semicolon insertion)이라고 한다. 세미콜론을 넣어야 하는 이유 세미콜론 찬성파들이 세미콜론을 반드시 넣어야 한다고 주장하는 이유는 인터프리터가 '문장 끝이라고 생각하는 지점'을 개발자가 예측하기 힘들기 때문이다. ASI는 규칙이 매우 복잡하고 동작을 예측하기 어렵다. 실제로 자바스크립트의 기본규칙은 문장 끝에
개요 Javascript 함수 문서에는 매개변수에 대해 아래와같은 설명이 포함되어있다. 💡 기본 자료형인 매개변수(number와 같은)는 값으로 함수에 전달됩니다; 즉, 값이 함수로 전달됩니다. 그러나 함수가 매개변수의 값을 바꾸더라도 이는 전역적으로 또는 함수를 호출하는 곳에는 반영되지 않습니다. 만약 여러분이 매개변수로 (예: Array이나 사용자가 정의한 객체와 같이 기본 자료형이 아닌 경우)를 전달하거나 함수가 객체의 속성을 변하게 하는 경우, 다음의 예처럼 그 변화는 함수 외부에서 볼 수 있습니다. 나는 이 문장을 보고 이렇게 생각했
자바스크립트와 비동기 처리 대부분의 프로그래밍 언어는 함수의 실행을 Stack구조를 사용해 처리한다. 이렇게 쓰이는 Stack을 Call Stack이라고 하는데, JS는 하나의 Call Stack을 사용한다. 즉 함수의 실행을 하나의 쓰레드가 관리한다. (모든 연산을 싱글 쓰레드로 처리하는게 아니다. 만약 그렇다면 많은 사람들이 js를 사용하지 않을 것이다.) 이런 구조에서 정직하게 Call stack 들어온 작업을 순서대로 하나하나 처리한다면, 중간에 시간이 오래 걸릴 수 있는 작업(Ex 서버와의 통신 등 )이 들어왔을 때 버벅거릴 것이다. 물론 사용자에게 그런 꼴을 보여줄 수는 없다. 그렇기 때문에 JS를 사용하는 API들은 JS Call stack에서 넘겨받은 작업을 비동기적으로 처리한 뒤, 이벤트로 알려주는 방식을 채택하는 경향이 있다. 이러한 구조를 이