목록javascript (14)
신비한 개발사전
한 변수에 저장된 객체(array 또는 object)를 다른 변수에도 저장할 땐 유의해야 할 점이 있다. 단순한 대입 연산자로 변수 x 자체를 변수 y에 할당해주면, 변수 x와 y는 같은 메모리 공간에 저장된 데이터를 불러오게 된다. 새로운 메모리 공간에 객체를 저장한 것이 아닌, 기존과 동일한 메모리에서 데이터를 불러오는 변수만 하나 더 생긴 것이다.let x = [1, 2, 3];let y = x;console.log(x); // [1, 2, 3]console.log(y); // [1, 2, 3]y[0] = 5;console.log(x); // [5, 2, 3]console.log(y); // [5, 2, 3] 위 예시에서 y 변수에 [1, 2, 3]의 값을 가진 x를 저장했다. 콘솔창에 값을 찍어보..
코드는 여러 파일로 분리해서 작성하는 것이 좋다. 어떤 코드가 무슨 역할을 하는지를 명확한 파일명과 함께 체계적으로 저장하면 다른 개발자와 협업할 때 도움되는 것은 물론이고, 나중에 스스로 짠 코드를 돌아볼 때도 그때 당시에 로직을 짠 의도와 방향성을 빨리 파악할 수 있다. 코드가 저장된 하나의 파일을 모듈이라고 한다. 기본적으로 모듈별로 코드를 분리하면 변수나 함수는 생성된 모듈 내에서만 참조할 수 있지만, 다른 모듈에서도 참조할 수 있도록 내보내는 것 또한 가능하다. 한 모듈 안에 있는 코드를 외부에서 사용할 수 있도록 내보내는 것을 export라 하고, 반대로 다른 모듈에 있는 코드를 불러오는 것을 import라 한다. 자바스크립트에는 CommonJS와 ESM이라고 하는 두가지의 모듈 유형이 있다...
자바스크립트의 reduce 메소드는 배열을 아예 다른 형식의 데이터로 가공하는 데에 매우 유용한 함수다. 배열의 각 인덱스를 차례대로 돌면서 함수를 실행하고, 그 결과값을 따로 저장해두었다가 다음 인덱스의 결과값과 합치는 것이 reduce 메소드의 핵심이다. 아래는 reduce 메소드의 기본적인 구성이다.array.reduce((종합값, 현재값, 인덱스) => { 함수 }, 시작값); reduce 메소드는 두가지 파라미터를 필요로 한다: 각 인덱스마다 실행할 함수와 시작값이다.reduce 메소드가 실행시키는 함수는 지금까지 저장한 종합값, 현재 인덱스에 들어있는 값, 그리고 현재 인덱스 값을 인자로 받는다. 이 함수는 다음 인덱스에서 사용할 종합값을 리턴해야 한다.시작값은 reduce 메소드를 실행했을 ..
동적 언어자바스크립트는 동적 언어라고 한다. 데이터의 타입이 제대로 정의되었는지를 코드가 실행중일 때 확인한다는 것이다. 정적 언어인 C언어나 자바(Java)는 코드를 실행하기 전에 컴파일 단계에서 타입을 확인하기 때문에, 잘못 정의된 타입이 있으면 코드를 컴파일하기 전에 에러가 발생한다. 사전에 타이핑 실수로 인한 코드 오류를 발견할 수 있다. 하지만 자바스크립트는 타입 정의를 미리 확인하지 않는다. 따라서 코드 로직에 데이터 타입을 잘못 사용하는 허점이 있으면 자바스크립트 코드가 한창 실행되고 있을 때 에러가 발생하기 십상이다. 타입스크립트(TypeScript)타입스크립트는 자바스크립트도 정적 언어처럼 컴파일할 때 타입 체킹을 할 수 있도록 자바스크립트에 타입을 추가한 언어다. 타입스크립트로 코드를 ..
알고리즘 문제와 씨름하던 도중, 어떻게 동작하는지 이해할 수 없는 함수가 있어서 챗GPT한테 물어보기로 했다.function solution(n){ var count = 1; var sum=0; while( count=n ){ sum = sum + n--; count++; } return sum;} 1부터 인자로 받은 n까지의 숫자를 더해주는 함수다. while문 안의 `sum = sum + n--`가 `sum += n` 와 `n - 1`를 합친 것과 같은 동작을 한다는 것은 알겠는데, while문이 왜 무한으로 반복되지 않는지가 이해되지 않아서 챗GPT의 도움을 받기로 했다. 먼저 위 코드가 무엇을 하는지 포괄적인 질문을 해봤다. 단계별로 무슨 일이 일어나는지 친절하게 설명해주지만,..
프로그래밍 언어에 사용되는 연산자를 공부하다가 난해한 문제를 만나버렸다. ++x+++y 연산자가 어디에 몇 개가 붙느냐에 따라서 숫자들이 더해지기도 하고 덧셈 뺄셈이 안되거나 아예 오류가 나기도 하는데.. 특히 증감 연산자가 있을 경우 혼란이 가중된다. 코딩할 때 혼선이 없도록 정리하자. 아래와 같은 문제가 주어졌을 때: var x = "5"; var y = 10; console.log(x+++y); // 15 출력 console.log(++x+++y); // 에러 첫번째로 찍히는 console 로그는 숫자가 출력되는데, 두번째는 에러가 발생한다. 첫번째 문제는 어떻게 계산해야 할지 컴퓨터가 이해할 수 있지만, 두번째 문제는 그렇지 않기 때문이다. x+++y 같은 연산자 3개가 연속으로 있기 때문에 이 ..