id.length==0 || id=="" 둘다 같은의미아닌가요?

조회수 333회
id.length==0 || id==""

javascript에 id.length==0 || id=="" 이런식으로 빈값체크하잖아요?

근데 오른쪽이나 왼쪽이나 둘다 같은뜻아닌가요? lngth가 0이면 당연히 아무것도 입력안됐으니까 "" 이랑 같은거같은데

굳이 ||로 둘다 써야하는 이유를 모르겠어요

  • null같은 값 걸러내는 용도 아닐까요? 초보자 2023.1.24 11:23
  • 질문 자체에만 답을 드리자면 네 맞아요 둘 다 써야 할 이유는 없습니다. id의 length가 0이 아닌데 id==''일 수는 없을 테니까요. 아래 답변과 같이, 둘 중 하나만 쓰든지, 해당 프로그램이 id라는 자료에 대해 단단히 착각하고 있는 듯한 부분의 오해를 풀어줘야 될 거 같네요. 엽토군 2023.1.24 17:46

1 답변

  • 저는 말씀하신 것과 같이 작성된 코드를 처음 보는 것 같습니다.
    의도는 모르겠으나 좋은 코드도 아닌 것 같습니다.
    빈 문자열인지 아닌지 확인 하려면 그냥 ""랑 비교하면 됩니다.

    또, id.length == 0id == ""은 같은 의미가 아닙니다.
    가령 id0일 경우 id.lengthundefined이므로 id.length == 0의 결과는 false, id == ""의 결과는 true입니다.

    const id = 0;
    console.log(id.length == 0); // false
    console.log(id == ""); // true
    

    물론 id가 무조건 문자열이라는 가정이 붙는다면 결과는 같겠지요.

    해당 코드가 좋지 않다고 생각하는 이유는 몇 가지가 있는데:

    • ==는 형변환을 하여 비교하게 됩니다. 문제가 일어날 가능성을 줄이기 위해 ===를 이용하는 것이 좋습니다. (참고 링크)
    • 해당 코드의 의도를 모르겠습니다. id[], { length: 0 }인 경우에는 빈 문자열이 아니지만 id.length == 0에 의해 true를 결과로 얻습니다. 빈 문자열인지 아닌지 확인하려면 그냥 ""과 같은지만 확인하면 됩니다. length 확인은 불필요한 것 같네요.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)