-
Notifications
You must be signed in to change notification settings - Fork 24
Operators
Rohan Singh edited this page Aug 28, 2014
·
30 revisions
The following operators are available, in order of precedence:
Category | Operators |
---|---|
Postfix |
x.y , x[y] , x(y) , x++ , x--
|
Prefix |
-x , !x , ++x , --x
|
Multiplication |
* , / , %
|
Addition |
+ , -
|
Relational | [[> , >= , < , <=
|
Equality | [[== , !=
|
Conditional And | [[&&
|
Conditional Or | [[||
|
Ternary | [[?:
|
Assign |
= , += , -= , *= , /= , %= , [[|>
|
These are the rules the equality operators (==
, !=
) follow:
- Values of different types will never be equal.
-
number
andstring
types of the same value will always be equal. -
object
,array
, andfunction
types will only be equal if they refer to the same instance, not value. -
true
,false
,null
, andundefined
are only equal with themselves.
The relational operators (>
, >=
, <
, <=
) can only be used on number
and string
values. When used on string
values the result allows you to determine sort order.
The conditional and/or operators (&&
, ||
) test if values evaluate to true
. &&
requires both values to evaluate to true
while ||
only needs one value to evaluate to true
.
Both operators support short circuiting. This means the right side of &&
will not be evaluated if the left side evaluates to false
, or the right side of ||
will not be evaluated if the left side evaluates to true
.
This behavior can used in many different ways, like providing default values:
fun square(num) {
num = num || 100;
return num * num;
}
var a = square(10); // 100
var b = square(); // 10000