1

While trying to fix a bug in another person's code, I found this line:

affiliationData.affiliationStatuses |= AffiliationStatuses.affiliatedWithCurrentCrmUser;

What does it actually do?

Tried to find it on MDN, but searching for |= returns zero results.

connexo
  • 53,704
  • 14
  • 91
  • 128
  • 1
    It has to be noted that the question this is being marked a duplicate of actually refers to [tag:java] and [tag:android], not [tag:javascript]. Since I searched SO with "[javascript] |=" I didn't find it. – connexo Jul 30 '15 at 07:36
  • MDN mainly specifies APIs (eventhough there are MDN resources about this topic). What you're looking for is the ECMAScript (Javascript) language specification. You may want to search for phrases like "ecmascript OR javascript operators", then you'll _definitely_ find it. – try-catch-finally Jul 30 '15 at 08:36

3 Answers3

4

The | is a Bitwise OR operator.

That statement is equivalent to:

affiliationData.affiliationStatuses = affiliationData.affiliationStatuses | AffiliationStatuses.affiliatedWithCurrentCrmUser
Pepe
  • 140
  • 5
3

Bitwise OR assignment

Shorthand operator:

x |= y

Meaning:

x = x | y

Source

Beri
  • 11,470
  • 4
  • 35
  • 57
2
`x |= y` 

is shorthand of x= x|y where | is a bitwise OR

Therefore

affiliationData.affiliationStatuses |= AffiliationStatuses.affiliatedWithCurrentCrmUser;

is equivalent to:

affiliationData.affiliationStatuses = affiliationData.affiliationStatuses | AffiliationStatuses.affiliatedWithCurrentCrmUser;
Nikhil Batra
  • 3,118
  • 14
  • 19