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