JS is a built-in pseudo module. It serves as a bridge to JavaScript world from oberon program. The major purpose of this module is to make possible to write bindings to JavaScript libraries.
MODULE test;
IMPORT JS;
BEGIN
JS.alert("Hello, World!")
END test.
You can call any JavaScript function (from global scope) using notation "JS.anyName" and pass any number of any arguments to it. Compiler will not check anything - these are JavaScript rules, all type errors will be raised in runtime.
JS.do is a predefined procedure to place specified JavaScript code directly to compiler output.
JS.do("throw new Error('test')");
JS.var is a type intended for explicit declaration of variables specific for JavaScript code.
VAR v: JS.var;
...
v := JS.someFunction();
JS.var is considered compatibale with any other type (there no any type checking as for JavaScript variables). But the opposite is not true: you cannot you cannot assign JS.var to Oberon types:
VAR v: JS.var; i: INTEGER;
...
v := i; (* OK *)
i := v; (* compile error *)