alert(0==false); //true; as expected
alert("a"[0]); //a; as expected
alert("a"[false]); //undefined; why?
왜 그렇습니까?이 경고가 표시되지 않는 이유
alert(0==false); //true; as expected
alert("a"[0]); //a; as expected
alert("a"[false]); //undefined; why?
왜 그렇습니까?이 경고가 표시되지 않는 이유
대괄호 표기법을 사용하여 속성에 액세스하려고 할 때마다 표현식의 값은 문자열으로 변환됩니다. 따라서 "a"[false]
은 실제로 "a"['false']
이고 "a"[0]
은 실제로 "a"['0']
입니다. 두 속성 이름은
는 0==false
에서 false
은 참으로 0
있는 수으로 변환됩니다 .. 분명히 매우 다릅니다. 환언
: Number(false)
및 String(false)
, 따라서 비록 0 == false
, "a"[0] !== "a"[false]
두 개의 상이한 값을 생성하고.
문자열 "a"
은 첫 번째 문자 만 0
입니다. 이유 인 0
가 falsy 같이
0 == false
true
,하지만 그들은 같은 유형이 아닌, 그리고 그들은 모두 falsy을 평가하는 경우에도 인덱스로
false
을 통과하는 것은 그것을 수
0
을하지 않는
0 === false
은
false
입니다 그것의입니다
undefined
JavaScript 개체는 0 인덱스 만 있습니다.
그래서
"a"[0] //'a'
"a"[1] //undefined
"a"[false] //undefined