过去多啦不再A梦2017-05-19 10:46:27
비교 연산자 중 동등 연산자에 대한 자세한 소개는 다음과 같습니다.
EQUAL(==)
비교 연산자는 서로 다른 두 가지 유형의 피연산자의 유형을 변환한 다음 엄격한 비교를 수행합니다. 두 피연산자가 모두 개체인 경우 JavaScript는 내부 참조를 비교하고 해당 참조가 메모리의 동일한 개체(영역)를 가리키는 경우, 즉 스택 메모리의 참조 주소가 동일한 경우에만 동일합니다.
위에 언급된 모든 내용은 정확합니다. 왜냐하면 [1] == [1]에서 두 배열은 서로 다른 객체이므로 동일하지 않기 때문입니다.
習慣沉默2017-05-19 10:46:27
Ecma-262.pdf
7.2.13 추상 평등 비교
已经明确说明了,这里的 [1] = [1]
实际是 [1] === [1]
正好试用第一条。
x와 y가 값인 x == y 비교는 true 또는 false를 생성합니다. 이러한 비교는 다음과 같이 수행됩니다.
Type(x)가 Type(y)와 동일하면 a. 엄격한 평등 비교 x === y를 수행한 결과를 반환합니다.
x가 null이고 y가 정의되지 않은 경우 true를 반환합니다.
x가 정의되지 않고 y가 null이면 true를 반환합니다.
Type(x)가 Number이고 Type(y)가 String이면 비교 결과 x == ToNumber(y)를 반환합니다.
Type(x)가 String이고 Type(y)가 Number인 경우 비교 결과를 ToNumber(x) == y로 반환합니다.
Type(x)가 Boolean인 경우 비교 결과를 ToNumber(x) == y로 반환합니다.
Type(y)가 Boolean이면 비교 결과 x == ToNumber(y)를 반환합니다.
Type(x)가 문자열, 숫자 또는 기호이고 Type(y)가 객체인 경우 비교 결과를 반환합니다. x ==
ToPrimitive(y).
Type(x)가 Object이고 Type(y)가 String, Number 또는 Symbol인 경우 비교 결과를 ToPrimitive(x)
== y로 반환합니다.
거짓을 반환합니다.