Promotic

Operátory JavaScript a popis syntaxe

Výraz jazyka JavaScript se podobá výrazu jazyka VBScript, má však více operátorů a proto je obecnější a pružnější (viz Seznam operátorů jazyka VBScript). Systém PROMOTIC proto na některých místech raději využívá výraz jazyka JavaScript.

Porovnání:
- Výraz sčítání, odčítání, násobení, dělení ... má stejný tvar v JavaScript i VBScript jazyce, např.
(4 * x + 1) / 3
- Výraz pro logické operace typu "a zároveň", "nebo" ... se již liší, např.
pro JavaScript: (b1 && b2) || b3
pro VBScript: (b1 And b2) Or b3.
- Velmi užitečný podmíněný JavaScript výraz (např. b ? 1 : 2) nelze ve VBScript vůbec zapsat.


JavaScript výraz se v systému PROMOTIC používá:
- v Pmg objektech v datové vazbě "E - Datová vazba na obecný výraz".
- v objektu PmExpr, který slouží k dynamickému vyhodnocení JavaScript výrazu.
- v parametrech příkazů zdrojového souboru pro objekt PmaReport - viz Popis zdrojového souboru objektu PmaReport.


Seznam operátorů JavaScript výrazu:

Aritmetické operátory:

operátor Popis
v1 + v2 Sčítání čísel nebo spojení řetězců
v1 - v2 Odčítání čísel
v1 * v2 Násobení čísel
v1 / v2 Dělení čísel
v1 % v2 Modulo (zbytek po dělení v1/v2)
v1 ? v2 : v3 Pokud hodnota v1 je true, pak se vrací hodnota v2, v jiném případě se vrací hodnota v3
v1++ Inkrement čísla = přičítání hodnoty 1 (v1=v1+1)
v1-- Dekrement čísla = odečítání hodnoty 1 (v1=v1-1)
Příklad:
JavaScriptVyber a zkopíruj do schránky

var val;

val = 1 + 2;   // Vrací 3
val = true + 1;   // Vrací 2
val = false + false;   // Vrací 0
val = 6 + "Kotel";   // Vrací "6Kotel"
val = "Kotel" + false;   // Vrací "Kotelfalse"
val = "Kotel" + "Ventil";   // Vrací "KotelVentil"

val = 12 % 5;   // Vrací 2
val = -1 % 2;   // Vrací -1
val = 1 % -2;   // Vrací 1
val = -4 % 2;   // Vrací -0
val = 5.5 % 2;   // Vrací 1.5

Porovnávací operátory:

operátor Popis
v1 == v2 Vrací true pokud v1 a v2 jsou stejné
v1 != v2 Vrací true pokud v1 a v2 jsou různé
v1 >= v2 Vrací true pokud v1 je větší nebo rovno v2
v1 > v2 Vrací true pokud v1 je větší než v2
v1 <= v2 Vrací true pokud v1 je menší nebo rovno v2
v1 < v2 Vrací true pokud v1 je menší než v2


- Systém PROMOTIC zatím nepodporuje přísné JavaScript porovnávací operátory typu === a !==.
- Dvě hodnoty typu String (text) jsou porovnány podle standardního abecedního pořadí, použitím Unicode hodnot.
- Při porovnání čísla a textu (String) je text konvertován na číslo.
- Pokud jeden z operandů je typu Boolean, pak je tento operand konvertován na 1 pokud je true a 0 pokud je false.


Příklad:
JavaScriptVyber a zkopíruj do schránky

var val;

val = 1 == 1;   // Vrací true
val = 1 == "1";   // Vrací true
val = "1" == 1;   // Vrací true
val = 0 == false;   // Vrací true

val = 1 != 2;   // Vrací true
val = 1 != "1";   // Vrací false
val = 1 != true;   // Vrací false
val = 0 != false;   // Vrací false

Logické operátory:

v1 && v2 Logické AND (vrací true pokud v1 a v2 je true)
v1 || v2 Logické OR (vrací true pokud v1 nebo v2 je true)
!v1 Logické NOT (vrací true pokud v1 je false)

Bitové operátory:

operátor Popis
v1 & v2 Bitové AND (každý bit vrácené hodnoty je výsledkem operace AND příslušných bitů ve v1 a v2)
v1 | v2 Bitové OR (každý bit vrácené hodnoty je výsledkem operace OR příslušných bitů ve v1 a v2)
v1 ^ v2 Bitové XOR (každý bit vrácené hodnoty je výsledkem operace XOR příslušných bitů ve v1 a v2
~v1 Bitové NOT (každý bit vrácené hodnoty je výsledkem operace NOT příslušného bitu ve v1). V systému PROMOTIC zatím není implementováno.
v1 << v2 Bitový posun vlevo (hodnoty bitů ve v1 se posunou o v2 bitů vlevo). Například v1<<2 vrací dvojnásobek hodnoty v1.
v1 >> v2 Bitový posun vpravo (hodnoty bitů ve v1 se posunou o v2 bitů vpravo). Například v1>>2 vrací celočíselný podíl v1/2.


Bitové operátory v jazyce JavaScript vyžadují celočíselné hodnoty (4-bajt celé číslo).
Pokud hodnota není celočíselná, pak operátor nejprve tuto hodnotu na celé číslo převede.
Pokud nelze hodnotu převést, pak operátor vrací hodnotu NaN.
Příklad:
Viz příklady v popisu datové vazby "E - Datová vazba na obecný výraz".
© MICROSYS, spol. s r.o.