Wyrażenia
- Wyrażenia podstawowe (Primary Expressions)
this - odwołuje się do obiektu, w kontekście którego jest wykonywany kod (this.PropertyName)
- Identydikator
- Literał
- Literał tablicowy
[] odpowiada new Array()
[0, 1, 2] odpowiada new Array(0, 1, 2) lub a = new Array(); a[0] = 0; a[1] = 1; a[2] = 2
- Inicjalizator obiektów
{} odpowiada new Object()
{Name0:0, Name1:1, Name2:2} odpowiada o = new Object(); o.Name0 = 0; o.Name1 = 1; o.Name2 = 2
- Operator grupowania -
()
- Wyrażenia lewostronne (Left-Hand-Side Expressions) - wyrażenia które mogą stać po lewej stronie przypisania, a więc mogą przechowywać wartość
- Dostęp do własności -
MemberExpression.Identifier odpowiada MemberExpression["Identifier"] lub Identifier = "Identifier"; MemberExpression[Identifier]
- Operator
new - tworzy nowy obiekt
- Wywołania funkcji (Function Calls)
- Lista argumentów
- Wyrażenia funkcyjne
- Wyrażenia "postfix"
- Postinkrementacja -
LeftHandSideExpression++
- Postdekrementacja -
LeftHandSideExpression--
- Operatory jednooperandowe (Unary Operators)
- Operator
delete - usuwa wskazaną własność z obiektu
- Operator
void - zwraca undefined
- Operator
typeof - zwraca typ
- Undefined =
"undefined"
- Null =
"object"
- Boolean =
"boolean"
- Number =
"number"
- String =
"string"
- Object
"object" - bez zaimplementowanej metody call
"function" - z zaimplementowaną metodą call
- Preinkrementacja -
++UnaryExpression
- Predekrementacja -
--UnaryExpression
- Jednooperanodowy operator
+ (znak liczby) - +UnaryExpression
- Jednooperanodowy operator
- (znak liczby) - -UnaryExpression
- Negacja bitowa (NOT) -
~UnaryExpression (wykorzystuje operator konwersji toInt32; wynik jest 32-bitową liczbą całkowitą ze znakiem)
- Negacja logiczna -
!UnaryExpression (wykorzystuje operator konwersji toBoolean)
- Operatory multiplikacyjne (Multiplicative Operators)
- Operator
* - mnożenie
- Jeżeli jeden z operandów jest równy
NaN, wynik jest NaN
Infinity * 0 = NaN
Infinity * Infinity = Infinity
Infinity * Infinity = +/-Infinity
Infinity * Number = +/-Infinity
- Operator
/ - dzielenie
- Jeżeli jeden z operandów jest równy
NaN, wynik jest NaN
Infinity / Infinity = NaN
Infinity / 0 = +/-Infinity
Infinity / Number = +/-Infinity
Number / Infinity = +/-0
0 / 0 = NaN
0 / Number = +/-0
Number / 0 = +/-Infinity
- Operator
% - modulo (reszta z dzielenia)
- Jeżeli jeden z operandów jest równy
NaN, wynik jest NaN
Infinity % Number = NaN, Number % 0 = NaN, Infinity % 0 = NaN
Number % Infinity = Number
0 % Number = 0
- Operatory addytywne (Additive Operators)
- Operator dodawania (
+)
- konkatemcja ciągów - jeżeli jeden z operandów jest typu String
- dodawanie liczb - wykorzystuje operator konwersji toNumber
- Jeżeli jeden z operandów jest równy
NaN, wynik jest NaN
(+Infinity) + (-Infinity) = NaN
Infinity + Number = Infinity
(-0) + (-0) = -0, (+0) + (+0) = +0, (+0) + (-0) = +0
(+Number) + (-Number) = +0
- Operator odejmowania (
-) - wykorzystuje operator konwersji toNumber
- Operatory przesunięcia bitowego (Bitwise Shift Operators)
- Przesunięcie w lewo ze znakiem -
ShiftExpression << AdditiveExpression (wykorzystuje operator konwersji toInt32)
- Przesunięcie w prawo ze znakiem -
ShiftExpression >> AdditiveExpression (wykorzystuje operator konwersji toInt32)
- Przesunięcie w prawo bez znaku -
ShiftExpression >>> AdditiveExpression (wykorzystuje operator konwersji toUint32)
- Operatory relacji (Relational Operators)
- Operator mniejszy niż (
<) - wykorzystuje operator konwersji toNumber
- Jeżeli jeden z operandów jest równy
NaN, wynik jest undefined
+0 < -0 = false, -0 < +0 = false
- Operator większy niż (
>)
- Operator mniejszy lub równy (
<=)
- Operator większy lub równy (
>=)
- Operator
instanceof - wykorzystuje metodę wewnętrzną hasInstance albo rzuca wyjątek TypeError
- Operator
in - wykorzystuje metodę wewnętrzną hasProperty albo rzuca wyjątek TypeError
- Operatory porównania (Equality Operators)
- Operator równości (
x == y)
- Jeżeli
x == Undefined, zwraca true
- Jeżeli
x == Null, zwraca true
- Jeżeli
x == NaN lub y == NaN, zwraca false
- Jeżeli
x == +/-0 i y == -/+0, zwraca true
- Jeżeli jeden z operandów jest typu Number a drugi nie, wykorzystywany jest dla niego operator konwersji toNumber
- Operator nie-równości (
!=)
- Operator ścisłej równości (
===) - dodatkowo porównuje typy operandów
- Operator ścisłej nie-równości (
!==)
- Operatory bitowe (Binary Bitwise Operators)
- Bitowy AND (
&) - iloczyn bitowy
- Bitowy OR (
|) - suma bitowa
- Bitowy XOR (
^)
- Logiczne operatory bitowe (Binary Logical Operators)
- Iloczyn logiczny (
&&)
- Suma logiczna (
||)
- Operator warunkowy (
LogicalORExpression ? x : y) - (Conditional Operator)
- Jeżeli
LogicalORExpression==false, zwraca y
- W przeciwnym razie zwraca
x
- Operatory przypisania (Assignment Operators)
- Proste przypisanie (
=) - przypisuje wartość i zwraca ją
*= (x *= y odpowiada x = x * y), /=, %=, +=, -=, <<=, >>=, >>>=, &=, ^=, |=
- Operator przecinek (
Expression , AssignmentExpression) - (Comma Operator) oblicza oba wyrażenia i zwraca wynik AssignmentExpression