P | A | Operator | Operand type(s) | Operation performed |
---|---|---|---|---|
15 | L | . | object, identifier | Property access |
L | [] | array, integer | Array index | |
L | ( ) | function, arguments | Function call | |
R | new | constructor call | Create new object | |
14 | R | ++ | lvalue | Pre- or post-increment (unary) |
R | -- | lvalue | Pre- or post-decrement (unary) | |
R | - | number | Unary minus (negation) | |
R | + | number | Unary plus (no-op) | |
R | ~ | integer | Bitwise complement (unary) | |
R | ! | boolean | Logical complement (unary) | |
R | delete | lvalue | Undefine a property (unary) | |
R | typeof | any | Return data type (unary) | |
R | void | any | Return undefined value (unary) | |
13 | L | *, /, % | numbers | Multiplication, division, remainder |
12 | L | +, - | numbers | Addition, subtraction |
L | + | strings | String concatenation | |
11 | L | << | integers | Left shift |
L | >> | integers | Right shift with sign-extension | |
L | >>> | integers | Right shift with zero extension | |
10 | L | <, <= | numbers or strings | Less than, less than or equal |
L | >, >= | numbers or strings | Greater than, greater than or equal | |
L | instanceof | object, constructor | Check object type | |
L | in | string, object | Check whether property exists | |
9 | L | == | any | Test for equality |
L | != | any | Test for inequality | |
L | === | any | Test for identity | |
L | !== | any | Test for non-identity | |
8 | L | & | integers | Bitwise AND |
7 | L | ^ | integers | Bitwise XOR |
6 | L | | | integers | Bitwise OR |
5 | L | && | booleans | Logical AND |
4 | L | || | booleans | Logical OR |
3 | R | ?: | boolean, any, any | Conditional operator (3 operands) |
2 | R | = | lvalue, any | Assignment |
R | *=, /=, %=, +=, -=, <<=, >>=, >>>=, &=, ^=, |= | lvalue, any | Assignment with operation | |
1 | L | , | any | Multiple evaluation |
The column labeled "P" specifies the precedence of each operator. Operator precedence controls the order in which operations are performed. Operators with higher numbers in the "P" column are performed before those with lower numbers.
Consider the following expression:
The multiplication operator * has a higher precedence than the addition operator +, so the multiplication is performed before the addition. Furthermore, the assignment operator = has the lowest precedence, so the assignment is performed after all the operations on the righthand side are completed.w = x + y*z;
Obs.
- In JavaScript all numbers are floating-point, so all divisions have floating-point results: 5/2 evaluates to 2.5, not 2.
- While the modulo operator is typically used with integer operands, it also works for floating-point values. For example, -4.3 % 2.1 evaluates to -0.1.
Niciun comentariu:
Trimiteți un comentariu