본문 바로가기

개발/JavaScript

(18)
[Typescript] type 및 try-catch 시 return 처리 // psuedo codeclass Person { name: string; foo() { console.log(this.name); } constructor(name: string) { this.name = name; }}const p = new Person('kim');console.log(JSON.stringify(p));console.log(JSON.parse(JSON.stringify(p)));function bar(): string { let result = ''; // result가 try에서도 catch에서도 사용해야 할 경우 (부득이) try { result = 'success'; ..
자바스크립트의 프로토타입 - 자바스크립트 핵심 가이드 프로젝트가 얼추 마무리 되고 라는 책을 펼쳐 읽다가 문득 프로토타입에 대한 이해 부족한 듯 해서 하기 코드를 이해하려고 노력 중이다. (아직 이해가 안 되고 있음) if(typeof Object.create !== 'function') { Object.create = function (o) { var F = function () {}; F.prototype=o; return new F(); }; } var another_stooge = Object.create(stooge); 먼저 'Object.create'가 존재하는지 확인합니다. 'Object.create'는 일반적으로 객체를 새로 만드는 JavaScript 내장 함수입니다. 그러나 이 코드는 이 기능이 존재하지 않았을 경우를 대비해 만들어졌습니다...
[Javascript] 최대공약수 구하기 // 최대공약수 구하기 function getGCD(twoNums) { console.log("getGCD() :: Start"); let divisors_0 = []; let divisors_1 = []; let commonDivisors = []; let pnYN = []; // 1. 먼저 두 수가 소수인지 아닌지 판별한다. pnYN.push(primeNumYN(twoNums[0]), primeNumYN(twoNums[1])); // 2. 두 수가 소수가 아니라면 if ( (pnYN[0] === false && pnYN[1] === false) || (pnYN[0] === false && pnYN[1] === true) || (pnYN[0] === true && pnYN[1] === false) ) ..
[자바스크립트] 10진수에서 2진수, 2진수에서 10진수 만들기 1. 10진수에서 2진수 만들기 function DecimalToBinary(n) { console.log(`${n}의 이진수 구하는 DecimalToBinary() Start`); let numsArr = new Array(); // 이진수를 담을 배열 생성 let binary; if(n > 0) { let naturalNum = n; let firstBinary = naturalNum%2; numsArr.push(firstBinary); while(true){ if(naturalNum > 0){ naturalNum = Math.floor(naturalNum/2); num = (naturalNum)%2; numsArr.push(num); } else { break; } } numsArr.reverse(..
[자바스크립트] 별 찍기 응용문제 2개 Q1. function star_Q3(n) { let temp = (2*n)-1; // (가장 아래 별의 갯수 기준) 즉, temp = 2n-1 console.log(`Start star, temp is ${temp}`); for(let i=n; i>0; i--) { // star_Q3의 인자는 탑 높이(n) console.log(""); for(let j=1; jj || j>n){ // 탑 현재 높이(i) >= 별 갯수(j)보다 크거나 같을 경우, 별 갯수(j)가 탑 높이(n)보다 크거나 같을 경우 공백 처리 process.stdout.write(" "); } else { // 공백 처리된 나머지 부분에 별 찍기 process.stdout.write("*"); } } n++; // 탑을 한 층씩 쌓을 ..
[러닝 자바스크립트] for...in과 hasOwnProperty() const SYM = Symbol(); const o = { a: 1, b: 2, c: 3, [SYM]: 4 }; // 1번 방법 (for...in) // for(let prop in o) { // if (!o.hasOwnProperty(prop)) continue; // console.log(`${prop}: ${o[prop]}`); // } // 2번 방법 (Object.keys) // 객체의 프로퍼티 키를 배열로 가져와야 할 때 편리 Object.keys(o).forEach(prop => console.log(`${prop}: ${o[prop]}`)); 문자열 프로퍼티와 심볼 프로퍼티가 있는 o 객체가 있다. 단순해보이지만 중간에 hasOwnProperty가 눈에 띄인다. hasOwnProperty..
자바스크립트 호이스팅 및 스코프 문제 { // 외부 블록 let x = { color: "blue" }; let y = x; let z = 3; { // 내부 블록 let x = 5; console.log(x); // 5 console.log(y.color); // blue y.color = "red"; console.log(z); // 3 } console.log(x.color); // red console.log(y.color); // red console.log(z); // 3 } 왜 x.color가 red가 되는걸까... y 변수에 x를 담는건데???
리액트를 하기 전 자바스크립트를 공부해야 하는 이유 개인적으로 리액트를 상당히 좋아하는 편이다. 솔직히 내가 리액트를 좋아하게 된 계기는 로고가 예쁘고 퍼즐처럼 엮이는 모양새로 러닝커브는 쎄지만 한 번 구축해두면 재사용이 용이하고 무엇보다 문법이 예쁘기 때문이었다. (?). 가독성도 좋고, 조각조각 나있는 언어 구성이 아주 마음에 들었다. 그리고, 늘 리액트는 자바스크립트 기반의 라이브러리이기 때문에 바닐라 자바스크립트에 대해 잘 알아야 한다는 사실을 머릿속으로는 알면서도 막상 자바스크립트를 진지하게 공부할 생각을 하지 못했었다. 대충 위기 상황에 맞닥트리면 해결되지 않을까 안일하게 생각했던 것 같다. 그러다가 이번 이직 기회로 딥하게 공부할 기회가 되었는데, 막상 딥하게 들어가보니 정말 필요한 지식들이다. 과거 바닐라 JS로 프로젝트를 해보기도 했고 꽤..