1.매개변수를 사용할 것을 가정해 인자는 만들었지만 인자를 입력하지 않은 경우는 undefined로 에러가 나지만 매개변수를 parameter = parameter || '';등으로 미리 값이 없는 경우를 대비하면 기본값을 설정해줄 수 있다. ES6부터는 매개변수자리에 parameter = ''처럼 바로 넣어서 할당할 수 있다.
2.ES11에서 도입된 옵셔널 체이닝 연산자는 'something'?.value;라는 방식으로 사용되며 'something'이 undefined 또는 null이 아니라면 할당된 값(false, u0, -0, NaN, '' 등)을 우측에 배정된 메서드로 처리할 수 있다.
3.ES11에서 도입된 null 병합 연산자는 'something' ?? 'return value';같은 ??연산자로 사용할 수 있으며 좌항의 something이 null 또는 undefined인 경우 우측의 지정된 값(여기서는 'return calue'이며 자유롭게 설정 가능하다)을 반환한다. 이를 통해 에러로 대표되는 null, undefined의 경우에 우회할 에러처리를 미리 지정하기 편해졌다.
4.백준에서는 js를 지원하지 않는다.. 하지만 아래처럼 node.js를 이용해 풀 수는 있다고 한다.
var fs = require('fs');
var input = fs.readFileSync('/dev/stdin').toString().split(' ');
var a = parseInt(input[0]);
var b = parseInt(input[1]);
console.log(a + b);
5.백준에서 문제를 푸는데 풀리지 않는 이유를 모르겠다. 위의 방식대로 값을 받아온다고 생각하고 입력값은 x1,y1,r1,x2,y2,r2순서로 1 1 1 1 1 5 이런 방식으로 제공된다고 한다.
input까지는 잘 나눠졌으며 0~5번까지 index가 각자 순서대로 잘 입력되었고
아래의 함수는 심지어 잘 작동된다( fs와 input 부분을 제외한 랜덤값 몇가지를 개발자도구 콘솔에 찍어봤다.)
const input = require('fs').readFileSync('/dev/stdin').toString().split(" ")
var fs = require('fs');
var input = fs.readFileSync('/dev/stdin').toString().split(' ');
var x1 = parseInt(input[0]);
var y1 = parseInt(input[1]);
var z1 = parseInt(input[2]);
var x2 = parseInt(input[3]);
var y2 = parseInt(input[4]);
var z2 = parseInt(input[5]);
var length = Math.sqrt((x1-x2)**2 + (y1-y2)**2)
var abs = Math.abs(z1-z2)
var adds = z1+z2
var result = 0
if(x1===x2 && y1===y2 && z1===z2){
result = -1
}
else if(length < abs){
result = 0
}
else if(length === abs){
result = 1
}
else if(length < adds){
result = 2
}
else if(length === adds){
result = 1
}
else if(length > adds){
result = 0
}
console.log(result)
백준으로 하고 싶지만 node를 추가적으로 학습해야 하는 부분이 조금 아쉽다.
또한 node에서 어떤 부분이 문제가 되었는지는 알 수 없기 때문에 기능적으로 작동을 해도 여기에선 작동을 하지 않는 이유를 정확히 알 수 없다. 테스트케이스를 작성해서 제공하는 문제풀이에 적응된 것 같다.
사실 이렇게 답답해하다가 비교하기 전 까지는 테스트케이스를 만들어서 비교해줬다는 사실조차도 제대로 인지하지 못했다.
정말 아는 만큼 보인다..
추가적으로 확인해본 결과 거리가 0으로 점인 경우는 1이라는 것 같은데 그 조건을 추가해도 달라지는 모습이 보이지 않는다..
데일리코딩20까지 풀었으나 딱히 새로운 기법은 별로 추가되지 않은 것 같아서 추가하지 않고 network부분도 추가하지 않다보니 회고에 적을 내용이 부실해보인다.
사실 복습보다는 예습들에 가깝지만 문제풀이나 딥다이브는 이미 한 자바스크립트와 관련이 많기 때문에 복습(어차피 주말엔 복습이기도 하고)으로 넣어버렸다.
'회고' 카테고리의 다른 글
[React] React State & Props (0) | 2022.06.07 |
---|---|
예습 (React State & Props) (0) | 2022.06.06 |
복습(React 기초, JS promise) (0) | 2022.06.04 |
[React] SPA (0) | 2022.06.03 |
[React] Intro (0) | 2022.06.02 |