1. 여러 인자 넘기기
: 코드를 짜다보면 여러 인자들을 함수에 넘겨야할 때가 있다.
: 어쩌면 아래와 같이 넘길지도 모른다.
function A() {
let a = [1,2,3,4];
let b = {a: 1, b:2};
let c = 'hello';
let d = 21;
B(a,b,c,d);
}
function B(a, b, c, d) {
console.log(a, b, c, d);
}
인자를 넘기는 또 다른 방법은 뭐가 있을까?
: 아래와 같이 쓰는 방법도 있을 것이다.
: 변수를 객체에 담아 보내는 방식으로, 인자가 일일이 쓰지 않아도 된다.
: 또한, 인자가 더 늘어날 시 함수내부 코드만 수정하면 된다.
function A() {
let a = [1,2,3,4];
let b = {a: 1, b:2};
let c = 'hello';
let d = 21;
let result = {a, b, c, d}; //[1]
B(result);
}
function B(result) {
const {a, b, c, d} = result; //[2]
console.log(a, b, c, d);
}
추가적으로 위 방법은 아래와 같이 변형할 수도 있다 :)
: 위 방법에서 인자를 받는 부분만 수정한 코드이다.
function B({a, b, c, d}) { //this!
console.log(a, b, c, d); //인자 바로 씀
}
2. number 체크법
: 평소와 다름없이 코드를 짜던 중, NaN
을 처리해야할 일이 있었다.
: NaN은 숫자가 아니니까, typeof NaN !== 'number'
라고 생각했다.
: 하지만! 어림도 없는 소리~ 바로 오류가 발생했다!
아니, NaN인데 왜 타입이 number라고 뜨는 거죠?
왜 NaN의 타입이 숫자냐!
라는 게시물들...😂
: 일단, 왜 NaN이 발생하는지 알아야한다.
: 아래는 왜 때문에 NaN이 발생하는지, 그 상황을 작성했다.
NaN이 발생하는 경우 | 예시 |
---|---|
- 0을 0으로 나누기 | ex) 0/0 |
- 무한대에 연산하기 | ex) infinity/infinity |
-undefined, string을 숫자로 바꾸기 | ex) Number('hello') |
-숫자가 아닌 값과 숫자와 빼기 연산 | ex) 'helllo' - 12 |
-NaN에 연산하기 | ex) NaN * 12 |
결과가 허수인 연산하기 | ex) Math.sqrt(-1) |
왜 NaN이 발생하는지는 알겠고요
왜 어째서 NaN의 타입이 숫자인거냐구욧! 😡
: NaN의 타입이 숫자인 이유는 NaN이 발생하는 원인과 관련있는데 NaN이
-> 컴퓨터가 표현하기에 큰 숫자(infinity)와의 연산
-> 숫자와 숫자가 아닌 값과의 연산
으로 나온다는 점이다.
: 그렇다고 NaN이 String, undefined, null타입은 또 아닌 것이다.
결국
NaN
은 String, null, undefined 등도 아니고,
정의할 수 없는 수치의 결과이니까, 타입이Number
라는 것!
: 그럼, 숫자 속에서 NaN은 어떻게 판별할 수 있을까?
: 그 방법은 바로 Number()
을 사용하는 것이다.
: 한 예시로, 배열에 NaN이 담겨있고 숫자가 아니면 반복문을 중단시켜보자.
const coins = [123, 345, 567, NaN];
for (let coin of coins) {
if (Number(coin) !== coin) { //this!
break;
}
}
: 코드를 보면 Number(value) !== value
을 사용해 숫자인지 판별했다.
: 이게 가능한 이유는 NaN !== NaN
이기 때문이다.
(NaN는 해석 할 수없는 숫자 값이니까, 다른 NaN과 같다고 할 수 없음)
3. 값 서로 바꾸기
: 만약 여러분이 두 변수의 값을 서로 바꾸려고 한다면, 아래와 같이 해보자! 🙂
: 단 한 줄의 코드로 두 변수를 쉽게 바꿀 수 있다!
let a = 11;
let b = 12;
[a, b] = [b, a];
// a = 12
// b = 11
: 아 혹시나 해서 얘기하는 거지만 []
없으면 값이 안 바뀌더라ㅎㅎ
a, b = b, a //이거 안됨!!!!
4. 글 작성 가능한 div
: 혹시 글 에디터 라이브러리를 사용해본 적이 있는가?
: 우리가 처음 html을 배울 때는 input, textarea에서만 글 작성이 가능하다고 배웠다.
: 그런데, 신기하기도 에디터 라이브러리에서는 div인데 글 작성이 가능하다.
: 그 이유는 contentEditable
속성 때문이다.
: 아래 코드는 contentEditable=true
을 한 div이다.
See the Pen contentEditable by KumJungMin (@kumjungmin) on CodePen.
: 신기하게도 div지만 글 작성이 가능한 걸 볼 수 있다!
: 그렇다면, 이 div가 글 작성이 가능한지 확인하는 함수가 있을까?
있다! 그건 바로
HTMLElement.isContentEditable
이다.
만약 이 요소에contentEditable
이 걸려있다면 이 함수는 true를 반환한다.
출처
아래 사이트에 가면 더 자세히 알 수 있어요!
'개발 기술 > 사소하지만 놓치기 쉬운 개발 지식' 카테고리의 다른 글
밀리초를 날짜로 바꾸는 법 (0) | 2021.09.12 |
---|---|
arrow, normal function의 차이 (0) | 2021.09.12 |
이중부정, 조건문 대신, or연산자와 조건문 (0) | 2021.09.12 |
ES21 논리연산자, Lazy loading, picture 태그, base_url (0) | 2021.09.12 |
[알아보기] a태그 margin, beforeupload, !important, event.keyCode (0) | 2021.09.11 |
댓글