[모던 자바스크립트 딥다이브] 15장 let, const 키워드와 블록 레벨 스코프
·
JavaScript/모던 자바스크립트 딥다이브
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/모던 자바스크립트 딥다이브
스코프란? 모든 식별자는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효범위가 결정된다. 이를 스코프라 한다. 즉 스코프는 식별자가 유효한 범위를 말한다. 다른 말로 스코프는 자바스크립트 엔진이 식별자를 검색 및 결정할 때 사용하는 규칙으로 이해할 수 있다. 스코프 내에서 식별자는 유일해야 하지만 다른 스코프에는 같은 이름의 식별자를 사용할 수 있다. 이러한 측면에서 스코프는 네임 스페이스다. 스코프 체인 전역에서 선언된 변수는 전역 스코프를 갖는 전역 변수이고, 지역에서 선언된 변수는 지역 스코프를 갖는 지역 변수다. 전역 변수는 어디서든지 참조할 수 있고, 지역 변수는 자신의 지역 스코프와 하위 지역 스코프에서 유효하다. 여기서 지역이란 함수 몸체 내부를 말하는 데, 13장..
[20221125] 항해99 주특기 리액트 첫날🍁(feat. 코딩애플 리액트 강의)
·
TIL
오늘부터 코딩 애플의 리액트 강의를 듣기 시작했다. 가장 먼저 JSX 문법 세가지를 배웠다. 첫번째는 태그에 클래스를 설정할 때에는 className으로 해야한다는 것. 두번째로 중괄호를 이용하면 어디든 변수를 중괄호에 넣어 나타낼 수 있다는 것이다. 이것을 데이터 바인딩이라고 한다. 세번째로 태그 내에서 css를 추가할 때 그냥 html과 다르게 JSX에서는 아래와 같이 object형태로 넣어주고 속성도 "-"기호를 쓰면 안된다는 것이다. 또 value에도 반드시 따옴표안에 넣어주어야한다. import logo from "./logo.svg"; import "./App.css"; function App() { let post = "강남 우동 맛집"; return ( 블로그임 {/* 이렇게 변수를 중괄호..
[알고리즘 문제] 하샤드 수
·
알고리즘
내가 푼 정답 function solution(x) { var answer = true; var y = String(x) var temp = 0 for (i = 0; i < y.length; i++) { temp += Number(y[i]) } if ( x % temp !== 0) { answer = false } return answer; }
[알고리즘 문제] 시저 암호
·
알고리즘
내가 푼 정답 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])..
[알고리즘 문제] 신규 아이디 추천
·
알고리즘
내가 푼 정답 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..
[알고리즘 문제] 소수 만들기
·
알고리즘
내가 푼 정답 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; }
[알고리즘 문제] 문자열 내림차순으로 배치하기
·
알고리즘
내가 푼 정답 function solution(s) { var answer = []; var upper = []; var lower = []; s = s.split(""); s.forEach((value) => value === value.toUpperCase() ? upper.push(value) : lower.push(value) ); upper.sort().reverse(); lower.sort().reverse(); answer = [...lower, ...upper].join(""); return answer; }