Wyrażenie w języku
JavaScript jest podobne do wyrażenia w języku
VBScript, posiada jednak więcej operatorów i dlatego jest bardziej ogólne i bardziej elastyczne (patrz
Lista operatorów języka VBScript). Z tego powodu system PROMOTIC w niektórych miejscach wykorzystuje raczej wyrażenie w języku
JavaScript.
Porównanie:
- Wyrażenie dodawanie, odejmowanie, mnożenie, dzielenie ... ma taką samą formę zarówno w języku
JavaScript jak i języku
VBScript, np.
(4 * x + 1) / 3
- Wyrażenie operacji logicznych rodzaju "i równocześnie", "albo" ... są już różne, np.
- Bardzo przydatne warunkowe wyrażenie
JavaScript (np.
b ? 1 : 2) nie można w języku
VBScript w ogóle zapisać.
Wyrażenie
JavaScript w systemie PROMOTIC jest stosowane:
- w obiekcie
PmExpr, przeznaczonym do dynamicznego obliczania wyrażeń
JavaScript.
Lista operatorów wyrażenia
JavaScript:
Operatory arytmetyczne:
operator |
Opis |
v1 + v2 |
Dodawanie liczb lub połączenie łańcuchów |
v1 - v2 |
Odejmowanie liczb |
v1 * v2 |
Mnożenie liczb |
v1 / v2 |
Dzielenie liczb |
v1 % v2 |
Modulo (reszta po dzieleniu v1/v2) |
v1 ? v2 : v3 |
Jeżeli wartość v1 jest true, wtedy jest zwracana wartość v2, w innym przypadku jest zwracana wartość v3 |
v1++ |
Inkrement liczby = dodanie wartości 1 (v1=v1+1) |
v1-- |
Dekrement liczby = odjęcie wartości 1 (v1=v1-1) |
Przykład:
JavaScriptWybierz oraz skopiuj do schowka
var val;
val = 1 + 2;
// Zwraca 3
val = true + 1;
// Zwraca 2
val = false + false;
// Zwraca 0
val = 6 + "Kociol";
// Zwraca "6Kociol"
val = "Kociol" + false;
// Zwraca "Kociolfalse"
val = "Kociol" + "Zawór";
// Zwraca "KociolZawór"
val = 12 % 5;
// Zwraca 2
val = -1 % 2;
// Zwraca -1
val = 1 % -2;
// Zwraca 1
val = -4 % 2;
// Zwraca -0
val = 5.5 % 2;
// Zwraca 1.5
Operatory porównawcze:
operator |
Opis |
v1 == v2 |
Zwraca true jeżeli v1 oraz v2 są takie same |
v1 != v2 |
Zwraca true jeżeli v1 oraz v2 są różne |
v1 >= v2 |
Zwraca true jeżeli v1 jest większe lub równe v2 |
v1 > v2 |
Zwraca true jeżeli v1 jest większe niż v2 |
v1 <= v2 |
Zwraca true jeżeli v1 jest mniejsze lub równe v2 |
v1 < v2 |
Zwraca true jeżeli v1 jest mniejsze niż v2 |
- System PROMOTIC aktualnie nie wspiera rygorystyczne JavaScript porównawcze operatory typu === oraz !==.
- Dwie wartości typu
String (tekst) są porównywane według standardowej kolejności alfabetycznej, stosując
Unicode wartości.
- Podczas porównania liczby oraz tekstu (String) tekst zostanie skonwertowany na liczbę.
- Jeżeli jeden z operandów jest typu Boolean, wtedy ten operand zostanie skonwertowany na 1 jeżeli jest true oraz 0 jeżeli jest false.
Przykład:
JavaScriptWybierz oraz skopiuj do schowka
var val;
val = 1 == 1;
// Zwraca true
val = 1 == "1";
// Zwraca true
val = "1" == 1;
// Zwraca true
val = 0 == false;
// Zwraca true
val = 1 != 2;
// Zwraca true
val = 1 != "1";
// Zwraca false
val = 1 != true;
// Zwraca false
val = 0 != false;
// Zwraca false
Operatory logiczne:
v1 && v2 |
Logiczne AND (zwraca true jeżeli v1 oraz v2 jest true) |
v1 || v2 |
Logiczne OR (zwraca true jeżeli v1 lub v2 jest true) |
!v1 |
Logiczne NOT (zwraca true jeżeli v1 jest false) |
Operatory bitowe:
operator |
Opis |
v1 & v2 |
Bitowe AND (każdy bit zwróconej wartości jest wynikiem operacji AND odpowiednich bitów v1 oraz v2) |
v1 | v2 |
Bitowe OR (każdy bit zwróconej wartości jest wynikiem operacji OR odpowiednich bitów v1 oraz v2) |
v1 ^ v2 |
Bitowe XOR (każdy bit zwróconej wartości jest wynikiem operacji XOR odpowiednich bitów v1 oraz v2 |
~v1 |
Bitowe NOT (każdy bit zwróconej wartości jest wynikiem operacji NOT odpowiedniego bitu v1). W systemie PROMOTIC na razie nie implementowane. |
v1 << v2 |
Bitowe przesunięcie w lewo (wartości bitów w v1 zostaną przesunięte o v2 bitów wlewo). Na przykład v1<<2 zwraca dwukrotność wartości v1. |
v1 >> v2 |
Bitowe przesunięcie w prawo (wartości bitów w v1 zostaną przesunięte o v2 bitów w prawo). Na przykład v1>>2 zwraca wynik dzielenia w zakresie liczb całkowitych v1/2. |
Operatory bitowe w języku
JavaScript wymagają wartości całoliczbowe (4-bajtowa liczba całkowita).
Jeżeli wartość nie jest całoliczbowa, wtedy operator najpierw tą wartość zamieni na liczbę całkowitą.
Jeżeli wartość nie można zamienić, wtedy operator zwraca wartość
NaN.