5

I have written some code and in certain places == is required and in others = is required. Can someone explain the differences or point me in the direction of the resource that can?

Example:

if($("#block").css.display == "none"){
  $("#block").css.display = "block";
}

The only thing I can come up with is that in one I’m changing and in the other I’m checking. But in both I am referring to equality.

Sebastian Simon
  • 18,263
  • 7
  • 55
  • 75
o_O
  • 5,527
  • 12
  • 52
  • 90
  • 2
    = is assignment a = b means put b inside a. . == is unstrict equality, a==b means a is roughly equal to b . a===b is strict equality and the one you should be using – Benjamin Gruenbaum Aug 08 '12 at 19:20
  • 4
    Any JavaScript language guide will go into details. – Dave Newton Aug 08 '12 at 19:20
  • But to be fair until I asked this I wasn't aware of ===, so now I am in need to know what's the diff so thanks for that link. – o_O Aug 08 '12 at 19:28
  • 2
    @RKS [This page](https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Expressions_and_Operators) covers JavaScript expressions in general. – Pointy Aug 08 '12 at 19:29
  • Related: https://stackoverflow.com/questions/2063480/the-3-different-equals – Jonas Wilms Mar 24 '18 at 21:22
  • Note that you shouldn’t write code like in your example. Checking CSS properties directly is [best avoided](/q/55071684/4642212). Instead, a CSS class should be used, e.g. `.hidden { display: none; }`; then [`.classList.contains("hidden")`](//developer.mozilla.org/docs/Web/API/Element/classList) to check for its existence, `.classList.toggle("hidden")` for toggling, etc. Consider using and [toggling](//developer.mozilla.org/docs/Web/API/Element/toggleAttribute) the [`hidden` attribute](//developer.mozilla.org/docs/Web/HTML/Global_attributes/hidden) instead. – Sebastian Simon Aug 27 '21 at 07:06
  • Does this answer your question? [The 3 different equals](https://stackoverflow.com/questions/2063480/the-3-different-equals) – TylerH Oct 24 '22 at 14:14
  • Rolled back [this revision](/revisions/11871616/6); the terms “single, double, and triple equals” help searchability. – Sebastian Simon Nov 09 '22 at 20:35

5 Answers5

17

= is the assignment operator. It sets a variable (the left-hand side) to a value (the right-hand side). The result is the value on the right-hand side.

== is the comparison operator. It will only return true if both values are equivalent after coercing their types to the same type.

=== is a more strict comparison operator often called the identity operator. It will only return true if both the type and value of the operands are the same.

I would check out CodeCademy for a quick intro to JavaScript.

If you prefer to read more, MDN is a great intro as well.

For those concerned about the source of the term "identity operator" jbabey pointed out that JavaScript: The Definitive Guide seems to mention it.

Sebastian Simon
  • 18,263
  • 7
  • 55
  • 75
Randall Hunt
  • 12,132
  • 6
  • 32
  • 42
  • 3
    Both `==` and `===` check the types of the operands. It's what they may do with the result of those checks that differentiates them. –  Aug 08 '12 at 19:29
  • @jbabey Could you provide a source for "identity operator"? ECMA-262 refers to it as "The Strict Equals operator." – Dennis Aug 08 '12 at 20:00
  • 2
    @Dennis i think it may have been on MDN at one point in time. I'm not sure where it originated, but it is a fairly common phrase (google for "javascript identity operator") – jbabey Aug 08 '12 at 20:04
  • 1
    @Dennis ah, here we go. The very widely known book [JavaScript: The Definitive Guide](http://docstore.mik.ua/orelly/webprog/jscript/ch05_04.htm) uses the term "Identity operators". it probably originated here (or at least became much more common). – jbabey Aug 08 '12 at 20:07
6

= assigns a value to a variable

== checks if the two parameter are equal to each other

=== checks if the two parameters are equal to each other and if their type is the same


! not operator

!= checks if the two parameters are not equal to each other

!== checks if the two parameters are not equal to each other or the type is not the same


one more

> checks if one parameter is greater than the other

>= checks if one parameter is greater than or equal to the other

>== DOESN'T EXIST


etcetera...

Community
  • 1
  • 1
Naftali
  • 144,921
  • 39
  • 244
  • 303
  • 1
    i think you meant: "checks if the two parameters are not equal to each other **OR** the type is not the same". DeMorgans :P – jbabey Aug 08 '12 at 19:25
4

== is used to test if the value on the left is equal to the value on the right.

= is used to assign the value on the right to the variable on the left.

grdaneault
  • 830
  • 1
  • 11
  • 21
3

In javascript you have also the ===.

= This is for set the value to the variable.

== This is for compare if the value is the same.

=== This is for compare if the value is the same and also the type is the same.

Bruno Costa
  • 2,708
  • 2
  • 17
  • 25
3

The = operator is an assignment operator. You are assigning an object to a value. The == operator is a conditional equality operation. You are confirming whether two things have equal values. There is also a === operator. This compares not only value, but also type.

Assignment Operators

Comparison Operators

kakridge
  • 2,153
  • 1
  • 17
  • 27