Javascript banana

km·2023년 6월 8일
0
post-thumbnail

Velog를 시작하며..

2017년 08월 부터 시작한 나의 커리어와 더불어 평소에 관심있었으나 실행하지 못했던 것들에 대한 기록을 통해 더 나은 글쓰기 실력과 하루에도 스쳐가는 수 많은 아이디어를 붙잡아보고자 한다. (+ 쓸데없는 생각 포함)

머릿속에 늘 있었지만 제대로 확인해보지는 않았던 ('b' + 'a' + + 'n' + 'a').toLowerCase() === 'banana'

banana의 ba까지는 이해가 된다. 마지막의 a까지도 이해가 된다.
그렇다면 중간의 nan은 어디서 왔는가?
이를 위해 이해되는 부분을 하나씩 걷어내보았다

  1. ('a' + + 'n' + 'a').toLowerCase()
    'anana'
  2. (+ + 'n' + 'a').toLowerCase()
    'nana'
  3. ( + + 'n').toLowerCase()
    Type Error!

설마 NaN...?🤨

저 뒤의 toLowerCase() 때문에 가려져 있던 진실을 마주해보도록 했다.

  1. ('a' + + 'n' + 'a')
    'aNaNa'
  2. (+ + 'n' + 'a')
    'NaNa'
  3. (+ + 'n')
    -> NaN 출력(isNaN((+ + 'n')) === true)
    4 (+ 'n')
    -> 얘도 NaN

결론

('b' + 'a' + + 'n' + 'a').toLowerCase() 에서, + 'n'은 숫자형 변수처럼 let a = -1 이나 let b = +3과 같이 양수/음수로 표현하는 연산자로 적용되나, string에 해당 연산자가 적용될 경우 숫자가 아니므로 NaN이 출력된것.

  1. 첫번째 시도에서 3번째에 toLowerCase() 적용시에 Type Error가 났던 것도 이제 이해가 된다(toLowerCase()는 string 객체에서 사용가능한 내장 객체).
  2. 굳이 + 'n'이 아니라 전체가 숫자로 된 string을 제외한 어떤 string 값이 들어와도 결과는 'banana'로 동일하다(풉)
profile
Grow with respect

0개의 댓글