μƒˆμ†Œμ‹

Languages/Java Script

[Js] 비ꡐ μ—°μ‚°μž | javascript μ—°μ‚°μž | μ—°μ‚°μž

  • -
λ°˜μ‘ν˜•

ν•΄λ‹Ή ν¬μŠ€νŒ…μ€ "μƒν™œμ½”λ”©"의 μ΄κ³ μž‰ λ‹˜μ˜ κ°•μ˜λ₯Ό 기반으둜 올린 κ²Œμ‹œκΈ€ μž…λ‹ˆλ‹€.

상업적인 μš©λ„κ°€ μ•„λ‹Œ, 개인 곡뢀 정리 λͺ©μ μœΌλ‘œ μ˜¬λ¦¬λŠ” κΈ€μž„μ„ 미리 μ•Œλ¦½λ‹ˆλ‹€.

 

 


 


κ°’κ³Ό 값이 μžˆμ„ λ•Œ, 두 값이 같은지 ν˜Ήμ€ μ–΄λ– ν•œ μͺ½μ΄ 큰지 νŒλ³„ν•˜λŠ” 것을

"비ꡐ" 라고 ν•œλ‹€.

 

 

μ—°μ‚°μžλž€?

μ–΄λ– ν•œ μž‘μ—…μ„ μ»΄ν“¨ν„°μ—κ²Œ μ§€μ‹œν•˜κΈ° μœ„ν•œ 기호λ₯Ό λ§ν•œλ‹€.

μ—°μ‚°μžλž€ 값에 λŒ€ν•΄μ„œ μ–΄λ–€ μž‘μ—…μ„ μ»΄ν“¨ν„°μ—κ²Œ μ§€μ‹œν•˜κΈ° μœ„ν•œ 기호인데 μš°λ¦¬λŠ” 이미 μ—°μ‚°μžλ₯Ό μ‚¬μš©ν–ˆλ‹€.

μ•„λž˜ 예제 μ€‘μ—μ„œ '='λŠ” μš°ν•­μ˜ 값인 1을 μ’Œν•­μ˜ λ³€μˆ˜ a에 λŒ€μž…ν•˜λŠ” 'λŒ€μž… μ—°μ‚°μž'λ‹€.
λ³Έ μˆ˜μ—…μ€ μ—°μ‚°μžκ°€ 무엇인가에 λŒ€ν•œ 이해λ₯Ό 돕기 μœ„ν•œ 것일 뿐 μ™ΈμšΈ ν•„μš”λŠ” μ—†λ‹€. 차차둜 μ•Œκ²Œ λœλ‹€.
a = 1  // a : λ³€μˆ˜ , = : λŒ€μž…μ—°μ‚°μž, 1 : μƒμˆ˜

 

 

비ꡐ μ—°μ‚°μž

μ’Œν•­μ΄ 있고 μš°ν•­μ΄ μžˆμ„ λ•Œ, λ‘κ°œκ°€ 같은지, ν˜Ήμ€ μ–΄λ– ν•œ 값이 큰지, μž‘μ€μ§€ λ˜λŠ” κ°™κ±°λ‚˜ μž‘μ€μ§€, ν¬κ±°λ‚˜ μž‘μ€μ§€ 

등을 λΉ„κ΅ν•˜λŠ” 것이닀.

 

ν”„λ‘œκ·Έλž˜λ°μ—μ„œ λΉ„κ΅λž€ 주어진 값듀이 같은지, λ‹€λ₯Έμ§€, 큰지, μž‘μ€μ§€λ₯Ό κ΅¬λΆ„ν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€.
이 λ•Œ 비ꡐ μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜λŠ”λ° 비ꡐ μ—°μ‚°μžμ˜ κ²°κ³ΌλŠ” trueλ‚˜ false μ€‘μ˜ ν•˜λ‚˜λ‹€.

trueλŠ” 비ꡐ κ²°κ³Όκ°€ μ°Έμ΄λΌλŠ” 의미이고, falseλŠ” κ±°μ§“μ΄λΌλŠ” λœ»μ΄λ‹€.
true와 falseλŠ” λΈ”λ¦°(boolean)이라고 λΆˆλ¦¬λŠ” 데이터 ν˜•μ‹μΈλ° 이것은 μ‘°κ±΄λ¬Έμ—μ„œ λΉ„μ€‘μžˆκ²Œ λ‹€λ£° 것이닀.
μ•„λž˜λŠ” μ£Όμš”ν•œ 비ꡐ μ—°μ‚°μžλ“€μ˜ μ’…λ₯˜μ™€ 그에 λ”°λ₯Έ μ˜ˆμ œλ“€μ΄λ‹€.

 

μ—°μ‚°μžλŠ” 기호둜 이루어져 μžˆλ‹€.

 

 


 

 == : 동등 μ—°μ‚°μž (equal operator)

 

동등 μ—°μ‚°μžλ‘œ μ’Œν•­κ³Ό μš°ν•­μ„ λΉ„κ΅ν•΄μ„œ μ„œλ‘œ 값이 κ°™λ‹€λ©΄ true λ‹€λ₯΄λ‹€λ©΄ falseκ°€ λœλ‹€.

 

'='κ°€ λ‘κ°œμΈ 것을 μ£Όμ˜ν•˜μž.

 

'='κ°€ ν•˜λ‚˜μΈ 것은 λŒ€μž… μ—°μ‚°μžλ‘œ μš°ν•­μ˜ 값을 μ’Œν•­μ˜ λ³€μˆ˜μ— λŒ€μž…ν•  λ•Œ μ‚¬μš©ν•˜λŠ” κ²ƒμœΌλ‘œ μ˜λ―Έκ°€ μ™„μ „νžˆ λ‹€λ₯΄λ‹€.

 

<script>

    alert(1==2)             //false
    alert(1==1)             //true
    alert("one"=="two")     //false 
    alert("one"=="one")     //true

</script>

 

 

=== : 일치 μ—°μ‚°μž (strict equal operator)

 

일치 μ—°μ‚°μžλ‘œ === μ’Œν•­κ³Ό μš°ν•­μ΄ 'μ •ν™•'ν•˜κ²Œ 같을 λ•Œ true λ‹€λ₯΄λ©΄ falseκ°€ λœλ‹€.

 

μ—¬κΈ°μ„œ μ •ν™•ν•˜λ‹€λŠ” 말의 μ˜λ―Έμ— μ§‘μ€‘ν•˜μž.

 

μ•„λž˜ 예λ₯Όλ³΄μž.

 

<script>
	
    alert(1=='1');              //true
    alert(1==='1');             //false

</script>

 

즉, 정보가 κ°™κ³  λ°μ΄ν„°μ˜ ν˜•μ‹λ„ μ •ν™•νžˆ 같을 λ•Œλ§Œ μΌμΉ˜ν•˜λ‹€κ³  ν•˜λŠ” 것이닀.

 

λ°”λ‘œ 이것이 'μ •ν™•'의 μ˜λ―Έλ‹€. 즉 ===λŠ” μ„œλ‘œ 같은 수λ₯Ό ν‘œν˜„ν•˜κ³  μžˆλ”λΌλ„

데이터 ν˜•μ΄ 같은 κ²½μš°μ—λ§Œ κ°™λ‹€κ³  νŒλ‹¨ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

 

κ²°λ‘ λΆ€ν„° λ§ν•˜λ©΄ == μ—°μ‚°μž λŒ€μ‹  === μ—°μ‚°μžλ₯Ό μ“°λŠ” 것을 κ°•λ ₯ν•˜κ²Œ κΆŒν•œλ‹€.

 


 

μœ„μ™€ 같이 == λŠ” μž‘μ€ ν”„λ‘œκ·Έλž¨μ—μ„œλŠ” νŽΈν•  수 μžˆμ§€λ§Œ,

 

큰 ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€ λ•ŒλŠ”  버그λ₯Ό λ°œμƒμ‹œν‚€κΈ° μ‰¬μš΄ 상황을 λ°œμƒμ‹œν‚¨λ‹€.

 

 

ν”„λ‘œκ·Έλž¨μ—μ„œλŠ” 데이터 νƒ€μž…μ΄ λ‹€λ₯Έ 것은 μ—„μ—°νžˆ λ‹€λ₯Έ 것이기 λ•Œλ¬Έμ—, '==' 보닀 '=== ' 을 μ‚¬μš©ν•˜λŠ” 것을 적극 μΆ”μ²œ ν•œλ‹€.

 

μ½”λ“œλ₯Ό μž‘μ„±ν•  λ•Œ 였λ₯˜κ°€ μžˆλŠ”κ²ƒμ΄, ν”„λ‘œκ·Έλž¨μ΄ λ™μž‘ 될 λ•Œ 였λ₯˜κ°€ λ°œκ²¬λ˜λŠ” 것보닀 훨씬 쒋은 것이닀.

 

 


 

λͺ‡κ°€μ§€ 사둀λ₯Ό 더 μ‚΄νŽ΄λ³΄μž.

(같은 의미λ₯Ό 가지고 μžˆλ‹€λ©΄, κ°™λ‹€κ³  μΈμ •ν•΄μ£ΌλŠ” 것이 ==μž„)

 

 

 

null = 값이 μ—†λ‹€λŠ” μ˜λ―Έμ΄λ‹€.

<script>
      var a = null;
      alert(a); //null이 뜸. 값이 μ—†λ‹€λŠ” 뜻 (ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μ˜λ„ν•˜μ—¬ μ§€μ •ν•œ 상황)
</script>

 

 

undefined = 값이 μ •μ˜λ˜μ§€ μ•Šμ•˜λ‹€.

ex) μ‘΄μž¬λŠ” ν•˜λ˜, μ–΄λ– ν•œ 값도 λ“€μ–΄μžˆμ§€ μ•Šλ‹€λŠ” λœ»μ΄λ‹€.

<script>
      var a;
      alert(a); //undefined 뜸. λ³€μˆ˜κ°€ μ •μ˜ λ˜μ—ˆμ§€λ§Œ 값이 μ—†μŒ.
</script>

 

 

즉 ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μ˜λ„ ν–ˆκ±΄, μ˜λ„ν•˜μ§€ μ•Šμ•˜κ±΄ 값이 μ—†λ‹€λŠ” κ²ƒλ§Œ λ”°μ§€λŠ” 것이 동등 μ—°μ‚°μž 이고,

값이 μ—†λŠ” 것보닀 ν”„λ‘œκ·Έλž˜λ¨Έμ˜ μ˜λ„λ₯Ό 더 νŒŒμ•…ν•˜λŠ” 것이 일치 μ—°μ‚°μž 이닀.

 

<script>
    alert(null == undefined);       //true
    alert(null === undefined);      //false
    alert(true == 1);               //true
    alert(true === 1);              //false
    alert(true == '1');             //true
    alert(true === '1');            //false

    alert(0 === -0);                //true
    alert(NaN === NaN);             //false
</script>

/*
nullκ³Ό undefinedλŠ” 값이 μ—†λ‹€λŠ” 의미의 데이터 ν˜•μ΄λ‹€. 
null은 값이 μ—†μŒμ„ λͺ…μ‹œμ μœΌλ‘œ ν‘œμ‹œν•œ 것이고, undefinedλŠ” κ·Έλƒ₯ 값이 μ—†λŠ” μƒνƒœλΌκ³  μƒκ°ν•˜μž.

NaN은 0/0κ³Ό 같은 μ—°μ‚°μ˜ 결과둜 λ§Œλ“€μ–΄μ§€λŠ” νŠΉμˆ˜ν•œ 데이터 ν˜•μΈλ° μˆ«μžκ°€ μ•„λ‹ˆλΌλŠ” λœ»μ΄λ‹€.
*/

 

true / false = λ°μ΄ν„°μ˜ ν˜•μ‹μ΄λ‹€.

 

이 λ‘κ°€μ§€μ˜ 값을 λ¬Άμ–΄μ„œ λΆ„λ¦¬ν•˜μžλ©΄ Booleanμ΄λΌλŠ” μΉ΄ν…Œκ³ λ¦¬μ— λΆ„λ₯˜ λœλ‹€.

 

 

λ°μ΄ν„°μ˜ 성격에 따라 λ°μ΄ν„°μ˜ ν˜•μ‹μ΄ μ‘΄μž¬ν•œλ‹€. (데이터 νƒ€μž…)

데이터 νƒ€μž… : 데이터

boolean : true, false
number : -1, 0, 1, 2, 3, ...
string : "a", "b", "c" 
undefined : undefined
null : null

 

 

!=

 

'!'λŠ” 뢀정을 μ˜λ―Έν•œλ‹€. 'κ°™λ‹€'의 뢀정은 '같지 μ•Šλ‹€'이닀.

이것을 κΈ°ν˜Έλ‘œλŠ” '!='둜 ν‘œμ‹œν•œλ‹€. μ•„λž˜μ˜ κ²°κ³ΌλŠ” !=의 결과인데 ==와 μ •λ°˜λŒ€μ˜ κ²°κ³Όλ₯Ό 보여쀀닀.

<script>
    alert(1!=2);            //true
    alert(1!=1);            //false
    alert("one"!="two");    //true
    alert("one"!="one");    //false
</script>

 

!==

'!=='λŠ” '!='와 '=='의 관계와 κ°™λ‹€. μ •ν™•ν•˜κ²Œ 같지 μ•Šλ‹€λŠ” μ˜λ―Έλ‹€. μ˜ˆμ œλŠ” μƒλž΅ν•œλ‹€.

 

 

>

 

μ’Œν•­μ΄ μš°ν•­λ³΄λ‹€ 크닀면 μ°Έ, 그렇지 μ•Šλ‹€λ©΄ κ±°μ§“μž„μ„ μ•Œλ €μ£ΌλŠ” μ—°μ‚°μžλ‹€. '<'λŠ” λ°˜λŒ€μ˜ 의미둜 언급은 μƒλž΅ν•˜κ² λ‹€.

<script>
    alert(10>20);   //false
    alert(10>1);    //true
    alert(10>10);   //false
</script>

 

>=

 

μ’Œν•­μ΄ μš°ν•­λ³΄λ‹€ ν¬κ±°λ‚˜ κ°™λ‹€. '<='λŠ” λ°˜λŒ€μ˜ 의미둜 언급은 μƒλž΅ν•˜κ² λ‹€.

<script>
    alert(10>=20); //false
    alert(10>=1); //true
    alert(10>=10); //true
</script>

 

 

 

μ°Έκ³  : dorey.github.io/JavaScript-Equality-Table/

 

JS Comparison Table

=== (negated: !==) When using three equals signs for JavaScript equality testing, everything is as is. Nothing gets converted before being evaluated.

dorey.github.io

β–² == 와 ===의 차이점

λ°˜μ‘ν˜•
Contents

ν¬μŠ€νŒ… μ£Όμ†Œλ₯Ό λ³΅μ‚¬ν–ˆμŠ΅λ‹ˆλ‹€

이 글이 도움이 λ˜μ—ˆλ‹€λ©΄ 곡감 λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.