no image
Uncaught TypeError: Cannot read properties of undefined (reading 'map')
문제상황{ message.items.map((data, idx) => { // Uncaught TypeError: Cannot read properties of undefined (reading 'map') // 생략 } )} 원인데이터가 전부 넘어오기도 전에 렌더링되었기 때문에 발생한 에러였다. 해결단축평가를 사용했다.{ message.id && message.items.map((data, idx) => { // 앞에 message.id 추가 // 생략 } )} 참고단축평가 (short-circuit evaluation)
2025.05.07
no image
[JS] 님 Math.random() 쓰다 털려요 – 진짜 랜덤인 줄 알았죠?
"현진님 Math.random() 보안 취약점에 걸렸어요.""네???" Math.random()javaScript에서 0이상 1미만의 난수를 반환하는 함수로, 같은 값을 반복하지는 않지만 내부적으로 의사 난수 생성기(PRNG, Pseudorandom Nubmer Generator)를 사용하기 때문에 완전 랜덤 값은 아니라고 한다. 보안 취약점으로는 다음 2가지가 있다.1. 예측 가능한 난수 생성 (Deterministic)Math.random()은 랜덤한 수를 생성하는 것처럼 보이지만, 사실 의사 난수 생성기를 기반으로 동작하는, 특정 알고리즘을 통해 계산된 값이다. 브라우저마다 Math.random()의 구현 방식은 다를 수 있지만, 대부분 기존의 내부 상태를 기반으로 난수를 생성한다. 내부 상..
2025.03.15
no image
[JS] Symbol 타입 필요성
Intro.Symboldms ES6에서 추가된 7번째 타입으로, 변경 불가능한 원시 타입의 값이라고 한다. 다른 값과 중복되지 않는 유일무이한 값으로, 이름이 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용한다고 한다. 근데 굳이 왜 필요하지? 언제 사용하는걸까?// 심벌 값 생성var key = Symbol('key');console.log(typeof key); // symbol// 객체 생성var obj = {};// 이름이 충돌할 위험이 없는 유일무이한 값인 심벌을 프로퍼티 키로 사용한다.obj[key] = 'value';console.log(obj[key]); // value Symbolsymbol은 생성자가 symbol 원시 값을 반환하는 내장 객체이다. 객체에 속성을..
2025.03.14
no image
[JS] forEach(console.log)
Intro.const arr = [1, 2, 3];arr.forEach(console.log); 1 2 3 이 한 줄씩 출력되겠다는 예상과 달리, 위 코드의 결과는 아래와 같다. forEach()forEach() 함수는 반복문을 통해 배열의 요소를 접근하지 않고도 콜백 함수로 간편하게 배열 요소들을 처리할 수 있는 함수이다.각 요소의 값뿐만 아니라 인덱스와 배열 자체도 콜백 함수에서 사용할 수 있다.forEach는 콜백 함수에 세 개의 인자를 전달한다.valueindexarray 따라서 위 코드의 실행 결과는 value, index, array가 한 줄씩 출력된 결과가 나오는 것이다. value만 출력하고 싶다면, 명시적으로 첫 번째 인자만 받도록 해야 한다. const numbers = [27..
2025.03.02