Promotic
WikipediaLinkedInYoutubeTwitterFacebook

Porównanie języków VBScript oraz JavaScript

System PROMOTIC wykorzystuje język skryptów VBScript już od pierwszych wersji od roku 1995. Czas jednak płynie i ten język nie należy już do najnowocześniejszych. Wspúierany jest tylko przez produkty Microsoftu, jednak pozostali producenci go nie wspierają (np. Internet Explorer go wspiera lecz nie jest wspierany przez Firefox, Chrome, Opera, Edge ..). Przez ten czas często stosowanym stał się język JavaScript i ten stał się podstawą i standardem technologii internetowych.
 
Również system PROMOTIC powoli dostosowuje się do tego trendu. Przy wytwarzaniu aplikacji PROMOTIC projektant może spotkać się ze składnią JavaScript w następujących miejscach:
- w obiekcie PmPanel w konfiguratorze Ustawienia języka skryptowego.
 
Celem tego rozdziału jest pokazanie, że nawet jeżeli język JavaScript jest bardziej ogólny (i dlatego może się wydawać, że jest bardziej złożony), to do celów systemu PROMOTIC zapisy okazują się prostszymi i w wielu przypadkach bardziej zrozumiałymi niż w przypadku języka VBScript. Składnia jest często bardzo podobna jak w języku VBScript. Na różnice tych dwu języków zwrócimy uwagę właśnie tutaj.
 

Różnica podczas pisania dużych/małych liter

Obydwa jęzuki różnią się rozróżnianiem dużych i małych liter w nazwach zmiennych, właściwościach oraz metod.

Język JavaScript rozróżnia duże i małe litery (jest case sensitive). Dlatego jest np. różnica między nazwą Value oraz value. Nazwy właściwości oraz metod należy pisać zgodnie z opisem w dokumentacji.

Język VBScript NIE rozróżnia duże i małe litery. Właściwość o nazwie Value można w tej składni napisać np. value, VALUE itd. Również tutaj zalecane jest pisanie nazw zgodnie z dokumentacją.

 

Domyślne właściwości lub metody

Język VBScript wspiera koncepcję tak zwanych "właściwości domyślnych" (lub metod). Każdy obiekt może posiadać jedną właściwość lub metodę określoną jakogłówną (domyślną) a wtedy tą nie trzeba w skrypcie pisać.

Przykład:

Obiekt PmData posiada metodę Item określoną jako główną. Tak samo zmienna w PmData (obiekt Var) posiada główną właściwość Value. Dlatego dostęp do wartości zmiennej "Temperatura1" można pisać w dowolny sposób:

Przykład1:
VBScriptWybierz oraz skopiuj do schowka

oData.Item("Temperatura1").Value = 95
'lub
oData("Temperatura1").Value = 95
'lub
oData.Item("Temperatura1") = 95
'lub
oData("Temperatura1") = 95
 
Język JavaScript nie posiada tej koncepcji i z tego powodu należy określić każdą właściwość oraz metodę. To znaczy, że w tym przypadku należy pisać:
Przykład2:
JavaScriptWybierz oraz skopiuj do schowka

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

Różnica przy oddzielaniu poleceń

W języku VBScript każde polecenie znajduje się standardowo na nowym wierszu (tzn. nowy wiersz służy jako separator poleceń).

W języku JavaScript każde polecenie musi być zakończone średnikiem i dlatego na jednym wierszu można wpisać kilka poleceń (nawet jeżeli nie jest dogodnym przesadanie w tej kwestii).

 
Przykład:
Dwa polecenia typu przepisanie wartości znajdują się każde na nowym wierszu
VBScriptWybierz oraz skopiuj do schowka

Dim a, b
a = 1
b = 2
 
Dwa polecenia mogą być każde na nowym wierszu
JavaScriptWybierz oraz skopiuj do schowka

var a = 1;
var b = 2;

a = 1; b = 2;  //lecz mogą być także na jednym wierszu
 

Różnica przy wywoływaniu metod

Przy wywoływaniu metod jest język JavaScript prostszy w tym, że za nazwą metody zawsze muszą się znajdować nawiasy (bez względu na to, czy metoda zwraca wartość).
 
Przykład:
VBScriptWybierz oraz skopiuj do schowka

Pm.Debug "jakiś tekst"  'w tym miejscu nie ma nawiasów, ponieważ nie interesuje nas zwracana wartość
oCommMsg.Run  'w tym miejscu ponownie nie ma nawiasów i metoda nie posiada parametrów
data = Pm.FileTextRead("#data:file.txt", 1)  'a tym miejscu znajdują się nawiasy, ponieważ interesuje nas zwracana wartość
 
JavaScriptWybierz oraz skopiuj do schowka

Pm.Debug("jakiś tekst");  //nawiasy muszą być zawsze pisane
oCommMsg.Run();  //nawiasy muszą być pisane nawet jeżeli metoda nie posiada parametrów
data = Pm.FileTextRead("#data:file.txt", 1);  //nawiasy są pisana ponownie, w tym przypadku zapis jest taki sam jak w VBScript
 

Wytworzenie i inicjalizacja zmiennej

W języku JavaScript jest prostsze wytworzenie zmiennej i przyszeregowanie jej wartości. To można wykonać przy pomocy jednego polecenia, podczas kiedy w języku VBScript są konieczne dwa polecenia. Przy przypisaniu nie rozróżnia się, czy dochodzi do przypisania prostej wartości czy obiektu, podczas kiedy w języku VBScript przy przypisaniu obiektu musi być zastosowane polecenie Set.
Przykład:
Polecenie Dim tylko wytworzy zmienne lecz nie umożliwia przypisania im wartości
VBScriptWybierz oraz skopiuj do schowka

Dim nVal, oPanel
nVal = 1
Set oPanel = pMe.Pm("/Panel1")
 
Polecenie var wytworzy zmienne i umożliwia im bezpośrednio przypisać wartość
JavaScriptWybierz oraz skopiuj do schowka

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

Operatory języka

Oba języki mają wiele wspólnych operatorów, na przykład dodawanie (+), odejmowanie (-), mnożenie (*), dzielenie (/) itd. Język JavaScript ma jednakże więcej operatorów a są bardzo przydatne. Na przykład przesunięcie bitowe (<< oraz >>), wyrażenie warunkowe (a ? b : c), dodawanie/odejmowani jedynki (++ oraz --).

Zwłaszcza przydatnym jest uproszczenie polecenia do dodania wartości (np. do proměnné v objektu PmData):

 
Przykład:
Dodanie wartości 15 do zmiennej oznacza konieczność powtórzenia wyrażenia także po prawej stronie polecenia.
VBScriptWybierz oraz skopiuj do schowka

pMe.Pm("/Data/#vars/Temperatura").Value = pMe.Pm("/Data/#vars/Temperatura").Value + 15
 
Dodanie wartości 15 do zmiennej jest o wiele prostsze dzięki wyrażeniu +=, które nie oznacza "przypisz" lecz "dodaj". Istnieją podobne polecenia dla operacji "odejmij", "pomnóż", "podziel" ..
JavaScriptWybierz oraz skopiuj do schowka

pMe.Pm("/Data/#vars/Temperatura").Value = += 15;
 
Patrz również Operatory JavaScript oraz opis składni.
 

Funkcje języka

Oba języki posiadają duże zestawy własnych funkcji (w języku VBScript na przykład funkcje Now, Abs ..). Język JavaScript posiada również dużąilość podobnych funkcji, lecz nie zalecamy ich stosowanie - lepszym rozwiązaniem jest korzystanie z metod obiektu Pm.
 

Typy danych języka

Oba języki posiadają typy danych jak "liczba całkowita", "Liczba rzeczywista", "Łańcuch", "Obiekt". Podstawowa różnica spoczywa w tym, że język JavaScript posiada różne typy dla "Data" oraz "Array". Oba powyższe typy są często stosowanymi w systemie PROMOTIC i sposób implementacji tych typów w języku JavaScript nie jest odpowiedni dla systemu PROMOTIC. Problem został rozwiązany w następujący sposób:
- dla typu "Data": W języku VBScript datą jest "coś jakby liczba rzeczywista" z której trudno bezpośrednio rozeznać, jaki jest rok, miesiąc, dzień, godzina, minuta, sekunda, milisekunda. Do tych celów służą funkcje VBScript, które z tej "liczby rzeczywistej" potrafią określić rok, miesiąc, itd.

Podobna koncepcja jest wprowadzona także dla JavaScript: Wszystkie metody PROMOTIC, które zwracają datę, zwracają "coś jakby liczbę rzeczywistą". Taką wartość możnw wtedy przekazywać do innych metod i głównie przy pomocy nowego obiektu PmDateObject można z tej wartości stwierdzić jaki jest rok, miesiąc, dzień ..

- dla typu "Array": Język VBScript posiada typ "Array" (można wytworzyć na przykład przy pomocy funkcji Array). Najpowszechniejszymi są warianty 1-wymiarowe i 2-wymiarowe.

Podobna koncepcja jest wprowadzona takąe dla JavaScript: Przy pomocy nowej metody Pm.CreatePmArray można wytworzyć "Array" jako specjalny obiekt PmArray, i ten obiekt równocześnie zwraca wszystkie metody PROMOTIC, które według dokumentacji "Array" powinny zwracać.

 

Warunek IF

Oba języki potrafią wytworzyć warunek przy pomocy polecenia IF. Jednakże w języku JavaScript polecenie jest zapisywane w trochę inny sposób.
 
Przykład:
Warunek jest wykonywany przy pomocy poleceń If...Then...Else
VBScriptWybierz oraz skopiuj do schowka

If a > 1 Then
  '...
  '...
Else
  '...
  '...
End If
 
Warunek jest wykonywany przy pomocy poleceń if...else. Jeżeli w warunku występuje klika wyrażeń, wtedy muszą być ujęte w nawiasach złożonych {...}.
JavaScriptWybierz oraz skopiuj do schowka

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

Polecenie pętli FOR

Oba języki posiadają polecenie FOR które umożliwia kilkukrotne wykonywanie części kodu. W języku JavaScript polecenie ma trochę bardziej skomplikowany zapis, lecz zato jest bardziej ogólne.
 
Przykład:
Polecenie For...Next
VBScriptWybierz oraz skopiuj do schowka

For i = 0 To 100
  '...
  '...
Next
 
Polecenie for ma trzy parametry.
- 1. parametr (np. i=0) jest polecenie, które zostanie wykonane na początku pętli.
- 2. parametr (np. i<100) jest wyrażenie, które jest sprawdzane na końcu pętli w celu stwierdzenia, czy ma być jeszcze dalej powtarzane
- 3. parametr (np. i++) jest polecenie, które zostanie wykonane na końcu pętli w celu zmiany zmiennej pętli

Jeżeli w poleceniu for występuje kilka poleceń, które mają być powtarzane, wtedy muszą być ujęte w złożonych nawiasach {...}.

JavaScriptWybierz oraz skopiuj do schowka

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

Polecenie wielokrotnego warunku

Oba języki posiadają polecenie wielokrotnego warunku, kiedy zestaw poleceń zostanie wykonany tylko jeżeli jakaś zmienna posiada odpowiednią wartość.
 
Przykład:
Polecenie Select Case
VBScriptWybierz oraz skopiuj do schowka

Select Case nVar
Case 1
  sMsg = "ok"
Case 2
  sMsg = "warning"
Case 3
  sMsg = "alarm"
End Select
 
Polecenie switch. Za każdym zestawem poleceń jest umieszcane polecenie break; które zakończy warunki i wyskoczy z polecenia switch.
JavaScriptWybierz oraz skopiuj do schowka

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