전체 글
-
[20221126] 항해99 주특기 리액트 2일차👍(feat. 코딩애플)TIL 2022. 11. 26. 23:55
아래와 같이 map함수를 사용함으로써 반복적으로 사용되는 html을 간단히 나타낼 수 있다. 그런데 여기서 각각의 게시물에 대해 따봉을 클릭할 때마다 따봉의 개수를 게시물마다 따로 업데이트해야하는데, 이 부분이 조금 어려웠다. 원본이었던 따봉 배열을 먼저 얕은 복사를 한 뒤에 수정을 해야하기 때문이었다. 이것에 대해 기술매니저님께 물어보니, 리액트의 클로저라는 특성때문에 원본을 쉽게 바꾸지 못한다고 한다. 그래서 반드시 복사를 한 뒤 복사본을 수정하고 변경함수에 넣어주어야한다는 것이다! 원본을 바꾸려면 아래의 따봉변경과 같은 useEffect 변경함수안에다가 로직을 짜면 가능하다고 한다. 그런데 그렇게 로직을 짜면 복잡한 로직은 가독성이 떨어지므로 따로 함수를 만드는 것이 좋다고 한다. { 글제목.map..
-
[모던 자바스크립트 딥다이브] 15장 let, const 키워드와 블록 레벨 스코프JavaScript/모던 자바스크립트 딥다이브 2022. 11. 26. 13:45
var 키워드의 변수 호이스팅 // 이 시점에는 변수 호이스팅에 의해 이미 foo변수가 선언 // 변수 foo는 undefined로 초기화 console.log(foo); // undefined // 변수에 값을 할당 foo = 123; console.log(foo); // 123 // 변수 선언은 런타임 이전에 자바스크립트 엔진에 의해 암묵적으로 실행 var foo; let 키워드 let 키워드로 이름이 같은 변수를 중복 선언하면 문법 에러가 발생한다. 또 let 키워드로 선언한 변수는 모든 코드 블록을 지역 스코프로 인정하는 블록 레벨 스코프를 따른다. let foo = 1; { let foo = 2; let bar = 3; } console.log(foo); // 1 console.log(bar);..
-
[모던 자바스크립트 딥다이브] 13장 스코프JavaScript/모던 자바스크립트 딥다이브 2022. 11. 26. 11:39
스코프란? 모든 식별자는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효범위가 결정된다. 이를 스코프라 한다. 즉 스코프는 식별자가 유효한 범위를 말한다. 다른 말로 스코프는 자바스크립트 엔진이 식별자를 검색 및 결정할 때 사용하는 규칙으로 이해할 수 있다. 스코프 내에서 식별자는 유일해야 하지만 다른 스코프에는 같은 이름의 식별자를 사용할 수 있다. 이러한 측면에서 스코프는 네임 스페이스다. 스코프 체인 전역에서 선언된 변수는 전역 스코프를 갖는 전역 변수이고, 지역에서 선언된 변수는 지역 스코프를 갖는 지역 변수다. 전역 변수는 어디서든지 참조할 수 있고, 지역 변수는 자신의 지역 스코프와 하위 지역 스코프에서 유효하다. 여기서 지역이란 함수 몸체 내부를 말하는 데, 13장..
-
[20221125] 항해99 주특기 리액트 첫날🍁(feat. 코딩애플 리액트 강의)TIL 2022. 11. 25. 19:46
오늘부터 코딩 애플의 리액트 강의를 듣기 시작했다. 가장 먼저 JSX 문법 세가지를 배웠다. 첫번째는 태그에 클래스를 설정할 때에는 className으로 해야한다는 것. 두번째로 중괄호를 이용하면 어디든 변수를 중괄호에 넣어 나타낼 수 있다는 것이다. 이것을 데이터 바인딩이라고 한다. 세번째로 태그 내에서 css를 추가할 때 그냥 html과 다르게 JSX에서는 아래와 같이 object형태로 넣어주고 속성도 "-"기호를 쓰면 안된다는 것이다. 또 value에도 반드시 따옴표안에 넣어주어야한다. import logo from "./logo.svg"; import "./App.css"; function App() { let post = "강남 우동 맛집"; return ( 블로그임 {/* 이렇게 변수를 중괄호..
-
[알고리즘 문제] 시저 암호알고리즘 2022. 11. 23. 21:24
내가 푼 정답 function solution(s, n) { var answer = ""; let order = [ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", ]; s = s.split(""); for (i = 0; i 25 ? order.indexOf(s[i]) + n - 26 : order.indexOf(s[i])..
-
[알고리즘 문제] 신규 아이디 추천알고리즘 2022. 11. 23. 21:15
내가 푼 정답 function solution(new_id) { // 1단계 new_id = new_id.toLowerCase(); // 2단계 let new_id_temp = new_id; var pattern1 = /[0-9]/; //숫자 var pattern2 = /[a-z]/; //영어 for (i = 0; i < new_id_temp.length; i++) { if ( pattern1.test(new_id_temp[i]) | pattern2.test(new_id_temp[i]) | (new_id_temp[i] === "-") | (new_id_temp[i] === "_") | (new_id_temp[i] === ".") ) { } else { new_id = new_id.replace(new_i..
-
[알고리즘 문제] 소수 만들기알고리즘 2022. 11. 23. 21:08
내가 푼 정답 function solution(nums) { var answer = 0; var temp = []; for (i = 0; i < nums.length; i++) { for (x = i + 1; x < nums.length; x++) { for (y = x + 1; y < nums.length; y++) { temp.push(nums[i] + nums[x] + nums[y]); } } } for (const i of temp) { for (x = 2; x < i; x++) { if (i % x === 0) { answer += 1; break; } } } return temp.length - answer; }