Promotic
WikipediaLinkedInYoutubeTwitterFacebook

Porovnání jazyků VBScript a JavaScript

Systém PROMOTIC používá skriptovací jazyk VBScript už od prvních verzí od roku 1995. Doba však pokročila a tento jazyk už není nejmodernější. Podporován je pouze Microsoft produkty, ostatní výrobci ho však nepodporují (např. Internet Explorer jej podporuje ale nepodporuje jej Firefox, Chrome, Opera, Edge ..). Za tu dobu se velmi prosadil jazyk JavaScript a ten se stal základem a standardem internetových technologií.
 
Systém PROMOTIC se tomuto trendu také pomalu přizpůsobuje. Při tvorbě PROMOTIC aplikace se projektant může setkat s JavaScript syntaxí na těchto místech:
- v datové vazbě E - Vazba na obecný výraz
- v objektu PmPanel v konfigurátoru Nastavení skriptovacího jazyka.
 
Účelem této kapitoly je ukázat, že i když je jazyk JavaScript obecnější (a tedy by se zdálo že složitější), pro účely systému PROMOTIC vychází zápisy jednodušší a v mnoha případech pochopitelnější než v jazyku VBScript. Syntaxe je často velmi podobná jako v jazyku VBScript. Na rozdíly těchto dvou jazyků upozorníme právě zde.
 

Rozdíl při psaní velkých/malých písmen

Oba jazyky se liší v rozlišování malých a velkých písmen v názvech proměnných, vlastností a metod.

Jazyk JavaScript rozlišuje malá a velká písmena (je case sensitive). Je proto rozdíl např. mezi názvem Value a value. Názvy vlastností a metod se musí psát přesně tak, jak je psáno v dokumentaci.

Jazyk VBScript NErozlišuje malá a velká písmena. Vlastnost nazvaná Value se zde může psát např. value, VALUE atd. I zde je však doporučeno psát názvy přesně tak, jak je psáno v dokumentaci.

 

Default vlastnosti nebo metody

Jazyk VBScript podporuje koncepci takzvaných "default vlastností" (nebo metod). Každý objekt může mít jednu vlastnost nebo metodu zvolenou jako hlavní (default) a tuto pak není třeba ve skriptu psát.

Příklad:

Objekt PmData má metodu Item zvolenou jako hlavní. Stejně tak proměnná v PmData (objekt Var) má hlavní vlastnost Value. Proto přístup k hodnotě proměnné "Teplota1" lze psát libovolně:

Příklad1:
VBScriptVyber a zkopíruj do schránky

oData.Item("Teplota1").Value = 95
'nebo
oData("Teplota1").Value = 95
'nebo
oData.Item("Teplota1") = 95
'nebo
oData("Teplota1") = 95
 
Jazyk JavaScript tuto koncepci nemá a je proto nutno každou vlastnost nebo metodu uvést. To znamená, že v tomto případě je nutno psát:
Příklad2:
JavaScriptVyber a zkopíruj do schránky

oData.Item("Teplota1").Value = 95;
 

Rozdíl při oddělování příkazů

V jazyku VBScript každý příkaz je na novém řádku (tzn. nový řádek slouží jako oddělovač příkazů).

V jazyku JavaScript každý příkaz musí končit středníkem a lze tak dát i více příkazů na nový řádek (i když to není vhodné přehánět).

 
Příklad:
Dva příkazy typu přiřazení hodnot jsou každý na novém řadku
VBScriptVyber a zkopíruj do schránky

Dim a, b
a = 1
b = 2
 
Dva příkazy mohou být každý na novém řádku
JavaScriptVyber a zkopíruj do schránky

var a = 1;
var b = 2;

a = 1; b = 2;  //ale také mohou být na jednom řádku
 

Rozdíl při volání metod

Při volání metod je jazyk JavaScript jednodušší v tom, že za názvem metody píše vždy závorky (bez ohledu na to zda metoda vrací hodnotu).
 
Příklad:
VBScriptVyber a zkopíruj do schránky

Pm.Debug "nějaký text"  'zde nejsou závorky protože nás nezajímá vrácená hodnota
oCommMsg.Run  'zde opět nejsou závorky a metoda nemá parametry
data = Pm.FileTextRead("#data:file.txt", 1)  'zde jsou závorky protože nás zajímá vrácená hodnota
 
JavaScriptVyber a zkopíruj do schránky

Pm.Debug("nějaký text");  //závorky se píší vždy
oCommMsg.Run();  //závorky se píší i když metoda nemá parametry
data = Pm.FileTextRead("#data:file.txt", 1);  //závorky se opět píší, v tom případě je zápis stejný jako ve VBScript
 

Založení a inicializace proměnné

V jazyce JavaScript je jednodušší založit proměnnou a přiřadit ji hodnotu. Lze to provést jedním příkazem, zatímco v jazyce VBScript jsou potřeba dva příkazy. Při přiřazení se neodlišuje zda přiřazuji jednoduchou hodnotu nebo objekt, zatímco v jazyce VBScript se při přiřazení objektu musí použít příkaz Set.
Příklad:
Příkaz Dim pouze založí proměnné ale nelze přiřadit hodnotu
VBScriptVyber a zkopíruj do schránky

Dim nVal, oPanel
nVal = 1
Set oPanel = pMe.Pm("/Panel1")
 
Příkaz var založí proměnné a lze hned i přiřadit hodnotu
JavaScriptVyber a zkopíruj do schránky

var nVal = 1;
var oPanel = pMe.Pm("/Panel1");
 

Operátory jazyka

Oba jazyky mají mnoho stejných operátorů, například sčítání (+), odčítání (-), násobení (*), dělení (/) atd. Jazyk JavaScript má však operátorů více a jsou hodně užitečné. Například bitový posun (<< a >>), podmíněný výraz (a ? b : c), přičítaní/odečítání jedničky (++ a --).

Zvlášť praktické je zjednodušení příkazu pro připočtení hodnot (např. do proměnné v objektu PmData):

 
Příklad:
Přípočítat hodnotu 15 k proměnné znamená zopakovat výraz i na pravé straně příkazu.
VBScriptVyber a zkopíruj do schránky

pMe.Pm("/Data/#vars/Teplota").Value = pMe.Pm("/Data/#vars/Teplota").Value + 15
 
Připočítat hotnotu 15 k proměnné je mnohem jednodušší díky výrazu +=, který neznamená "přiřaď" ale "připočti". Jsou podobné příkazy pro "odečti", "vynásob", "vyděl" ..
JavaScriptVyber a zkopíruj do schránky

pMe.Pm("/Data/#vars/Teplota").Value = += 15;
 
Viz také Operátory JavaScript a popis syntaxe.
 

Funkce jazyka

Oba jazyky mají velkou množinu vlastních funkcí (v jazyku VBScript například funkce Now, Abs ..). Jazyk JavaScript má také velký počet podobných funkcí, nedoporučujeme je však používat - lepší je využívat pouze metod objektu Pm.
 

Datové typy jazyka

Oba jazyky mají datové typy jako "celé číslo", "Reálné číslo", "String", "Objekt". Hlavní rozdíl je v tom, že jazyk JavaScriptrozdílné typy pro "Datum" a "Array". Oba tyto typy jsou v systému PROMOTIC často používané a způsob implementace těchto typů v jazyku JavaScript není vhodný pro účely systému PROMOTIC. Problém byl vyřešen následovně:
- pro typ "Datum": V jazyku VBScript je datum "něco jako reálné číslo" ze kterého lze přímo zteží poznat, jaký je rok, měsíc, den, hodina, minuta, sekunda, milisekunda. K tomu jsou pomocné VBScript funkce, které z tohoto "reálného čísla" poznají rok, měsíc, atd.

Podobná koncepce je zavedena i pro JavaScript: Všechny PROMOTIC metody, které vrací datum, vrací "něco jako reálné číslo". Tuto hodnotu pak lze například předávat do jiných metod a hlavně pomocí nového objektu PmDateObject lze z této hodnoty zjistit jaký je rok, měsíc, den ..

- pro typ "Array": Jazyk VBScript má typ "Array" (lze vytvořit například pomocí funkce Array). Nejběžnější jsou 1-rozměrné a 2-rozměrné varianty.

Podobná koncepce je zavedena i pro JavaScript: Pomocí nové metody Pm.CreatePmArray lze vytvořit "Array" jako speciální objekt PmArray, a zároveň tento objekt vrací všechny PROMOTIC metody, které podle dokumentace mají "Array" vracet.

 

Podmínka IF

Oba dva jazyky umí vytvořit podmínku pomocí příkazu IF. V jazyce JavaScript se však zapisuje trochu jiným způsobem.
 
Příklad:
Podmínka se provádí pomocí příkazů If...Then...Else
VBScriptVyber a zkopíruj do schránky

If a > 1 Then
  '...
  '...
Else
  '...
  '...
End If
 
Podmínka se provádí pomocí příkazů if...else. Pokud je v podmínce více příkazů, pak jsou uzavřeny do složených závorek {...}.
JavaScriptVyber a zkopíruj do schránky

if (a > 1)
{
  //...
  //...
}
else
{
  //...
  //...
}
 

Příkaz cyklu FOR

Oba dva jazyky mají příkaz FOR který umožní procházet část kódu vícekrát. V jazyce JavaScript má tento příkaz trochu složitější zápis ale zase je mnohem obecnější.
 
Příklad:
Příkaz For...Next
VBScriptVyber a zkopíruj do schránky

For i = 0 To 100
  '...
  '...
Next
 
Příkaz for má tři parametry.
- 1. parametr (např. i=0) je příkaz který se provede na začátku cyklu.
- 2. parametr (např. i<100) je výraz který se otestuje na konci cyklu pro zjištění zda se má ještě dál opakovat
- 3. parametr (např. i++) je příkaz, který se provede na konci cyklu pro změnu proměnné cyklu

Pokud je v příkazu for více příkazů které se mají opakovat, pak jsou uzavřeny do složených závorek {...}.

JavaScriptVyber a zkopíruj do schránky

for (i = 0; i <= 100; i++)
{
  //...
  //...
}
 

Příkaz pro vícenásobnou podmínku

Oba dva jazyky mají příkaz pro vícenásobnou podmínku, kdy se sada příkazů provede pouze pokud nějaká proměnná nabývá příslušné hodnoty.
 
Příklad:
Příkaz Select Case
VBScriptVyber a zkopíruj do schránky

Select Case nVar
Case 1
  sMsg = "ok"
Case 2
  sMsg = "warning"
Case 3
  sMsg = "alarm"
End Select
 
Příkaz switch. Za každou sadou příkazů se dává break; který ukončí podmínky a vyskočí z příkazu switch.
JavaScriptVyber a zkopíruj do schránky

switch (nVar)
{
case 1:
  sMsg = "ok";
  break;
case 2:
  sMsg = "warning";
  break;
case 3:
  sMsg = "alarm";
  break;
}
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice