[ ] 는 JS 에서 사실입니까 ?

2630 단어
아래 코드 조각은 정말 혼란스러울 수 있습니다.

if ([]) {
  console.log([]==false)
}


  • [] (빈 배열)이 참이면 []==falsetrue로 평가되는 이유는 무엇입니까?
  • []가 거짓이면 코드가 if 블록에 들어가는 이유는 무엇입니까?
    이 두 가지를 하나씩 답해 봅시다.

  • 다음은 JavaScript의 유일한 거짓 값입니다.
  • false
  • "" (빈 문자열)
  • 0
  • NaN
  • null
  • undefined

  • 따라서 []는 확실히 거짓이 아닙니다

    코드가 if 블록에 들어가는 이유는 무엇입니까?



    JavaScript가 []를 부울로 강제 변환하여 true 가 되기 때문에 코드가 if 블록에 들어가고 있습니다.

    console.log(Boolean([])) // true
    


    []==거짓이 참인 이유는 무엇입니까?



    Equal (==)
    If the two operands are not of the same type, JavaScript converts the operands then applies strict comparison. If either operand is a number or a boolean, the operands are converted to numbers if possible; else if either operand is a string, the other operand is converted to a string if possible. If both operands are objects, then JavaScript compares internal references which are equal when operands refer to the same object in memory.



    따라서 여기 피연산자 중 하나는 부울이므로 JavaScript는 두 피연산자를 모두 숫자로 변환하고 엄격한 비교를 수행합니다. Number([])Number(false) 모두 0 를 제공하므로 비교는 true 가 됩니다.

    console.log([]==false)
    // This is similar to:
    console.log(Number([])===Number(false))
    


    감사!!
    더 많은 놀라운 콘텐츠를 보려면 내 (인스타그램 페이지)[ ]를 팔로우하세요.

    좋은 웹페이지 즐겨찾기