본문 바로가기

Web/JavaScript

[mozilla document] Equality_comparisons_and_sameness

728x90

https://developer.mozilla.org/en-US/docs/Web/API

 

Web APIs | MDN

When writing code for the Web, there are a large number of Web APIs available. Below is a list of all the APIs and interfaces (object types) that you may be able to use while developing your Web app or site.

developer.mozilla.org

프론트가 너무 약해서

오늘부터 조금씩 다시 공부해보려고 하는 중!

 

 

 

 

 

일이 너무 바빠서 거의 몇달을 안하고 쉬었네ㅜㅠ 다시 조금씩이라도 해보자

알든 모르든 문서를 무조건 한번은 훑어보는게 목표이다

정확히 방식을 모르더라도 이런게 있었구나 해서 필요할 때 기능을 찾아볼 수 있도록 하기 위함이다

 

 

 

mozilla 는 한국어 번역본이 있다.

굉장히 좋다...b

 

 

 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Equality_comparisons_and_sameness

 

동등 비교 및 동일성 - JavaScript | MDN

JavaScript는 다음 세 가지의 값 비교 연산을 제공합니다.

developer.mozilla.org

 

 

=== 엄격 동등 비교 (삼중)

== 느슨한 동등 비교(이중)

Object.is()

 

 

===를 사용하는 엄격한 동등 엄격한 동등은 두 값이 같은지 비교합니다. 비교되기 전 어떠한 값도 암시적으로 다른 값으로 변환되지 않습니다. 값의 형식이 다른 경우, 두 값은 동등하지 않다고 간주됩니다. 값의 형식이 같고 숫자가 아니고 값이 같다면 두 값은 동등하다고 간주됩니다. 마지막으로 두 값이 모두 숫자인 경우, 둘 다 NaN이 아닌 동일한 값이거나, 하나가 +0이고 하나가 -0이면 동등한 것으로 간주됩니다.

 

 

==를 사용하는 느슨한 동등 느슨한 동등은 대칭입니다. 즉, A == B는 A와 B가 어떤 값이든 항상 B == A와 동일한 의미 체계를 가집니다(적용된 변환 순서 제외). ==를 사용하여 느슨한 동등을 수행하는 동작은 다음과 같습니다.

 

 

Object.is()를 사용한 동일 값 동등 동일 값 동등은 두 값이 모든 맥락에서 기능적으로 동일한지 여부를 결정합니다. (이 사용 사례는Liskov 대체 원칙 사례를 보여줍니다.) 변경할 수 없는 속성을 변경하려 하는 경우 한 사례가 발생합니다.

 

 

 

Same-value-zero equality

function sameValueZero(x, y) {
  if (typeof x === "number" && typeof y === "number") {
    // x와 y는 같거나(-0과 0일 수 있음) 둘 다 NaN입니다.
    return x === y || (x !== x && y !== y);
  }
  return x === y;
}

 

 

x y == === Object.is SameValueZero
undefined undefined ✅ true ✅ true ✅ true ✅ true
null null ✅ true ✅ true ✅ true ✅ true
true true ✅ true ✅ true ✅ true ✅ true
false false ✅ true ✅ true ✅ true ✅ true
'foo' 'foo' ✅ true ✅ true ✅ true ✅ true
0 0 ✅ true ✅ true ✅ true ✅ true
+0 -0 ✅ true ✅ true ❌ false ✅ true
+0 0 ✅ true ✅ true ✅ true ✅ true
-0 0 ✅ true ✅ true ❌ false ✅ true
0n -0n ✅ true ✅ true ✅ true ✅ true
0 false ✅ true ❌ false ❌ false ❌ false
"" false ✅ true ❌ false ❌ false ❌ false
"" 0 ✅ true ❌ false ❌ false ❌ false
'0' 0 ✅ true ❌ false ❌ false ❌ false
'17' 17 ✅ true ❌ false ❌ false ❌ false
[1, 2] '1,2' ✅ true ❌ false ❌ false ❌ false
new String('foo') 'foo' ✅ true ❌ false ❌ false ❌ false
null undefined ✅ true ❌ false ❌ false ❌ false
null false ❌ false ❌ false ❌ false ❌ false
undefined false ❌ false ❌ false ❌ false ❌ false
{ foo: 'bar' } { foo: 'bar' } ❌ false ❌ false ❌ false ❌ false
new String('foo') new String('foo') ❌ false ❌ false ❌ false ❌ false
0 null ❌ false ❌ false ❌ false ❌ false
0 NaN ❌ false ❌ false ❌ false ❌ false
'foo' NaN ❌ false ❌ false ❌ false ❌ false
NaN NaN ❌ false ❌ false ✅ true ✅ true
728x90

'Web > JavaScript' 카테고리의 다른 글

강의들으면서 정리하기 4  (0) 2023.09.01
강의들으면서 정리하기3  (0) 2023.08.31
강의 들으면서 정리하기2  (0) 2023.08.30
강의 들으면서 정리하기1  (0) 2023.08.29
[mozilla api] drag and drop  (0) 2023.08.29