Date: 2016may11
Language: javaScript
OS: Linux
Keywords: display, output
Q. How can I print from the command line js (javaScript) interpreter?
I can not use document.write() or alert() etc
A. Use putstr() or print()
#!/usr/bin/js
function sayHello() {
putstr("hello\n");
}
sayHello();
Its called SpiderMonkey.
More info
https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Introduction_to_the_JavaScript_shell
To install on RedHat/Fedora/CentOS
dnf install js
You can also use it as a shell:
$ js
> print(55);
There is a help() function:
echo 'help()' | js
Yields
Command Description
======= ===========
version([number]) Get or force a script compilation version number
revertVersion() Revert previously set version number
options([option ...]) Get or toggle JavaScript options
load(['foo.js' ...]) Load files named by string arguments
evaluate(code) Evaluate code as though it were the contents of a file
run('foo.js')
Run the file named by the first argument, returning the number of
of milliseconds spent compiling and executing it
readline() Read a single line from stdin
print([exp ...]) Evaluate and print expressions
putstr([exp]) Evaluate and print expression without newline
dateNow() Return the current time with sub-ms precision
help([name ...]) Display usage and help messages
quit() Quit the shell
assertEq(actual, expected[, msg])
Throw if the first two arguments are not the same (both +0 or both -0,
both NaN, or non-zero and ===)
assertJit() Throw if the calling function failed to JIT
gc() Run the garbage collector
gcparam(name, value)
Wrapper for JS_SetGCParameter. The name must be either 'maxBytes' or
'maxMallocBytes' and the value must be convertable to a positive uint32
countHeap([start[, kind]])
Count the number of live GC things in the heap or things reachable from
start when it is given and is not null. kind is either 'all' (default) to
count all things or one of 'object', 'double', 'string', 'function',
'qname', 'namespace', 'xml' to count only things of that kind
makeFinalizeObserver()
get a special object whose finalization increases the counter returned
by the finalizeCount function
finalizeCount()
return the current value of the finalization counter that is incremented
each time an object returned by the makeFinalizeObserver is finalized
setDebug(debug) Set debug mode
setDebuggerHandler(f) Set handler for debugger keyword to f
setThrowHook(f) Set throw hook to f
trap([fun, [pc,]] exp) Trap bytecode execution
untrap(fun[, pc]) Remove a trap
line2pc([fun,] line) Map line number to PC
pc2line(fun[, pc]) Map PC to line number
stackQuota([number]) Query/set script stack quota
stringsAreUTF8() Check if strings are UTF-8 encoded
testUTF8(mode) Perform UTF-8 tests (modes are 1 to 4)
throwError() Throw an error from JS_ReportError
build() Show build date and time
clear([obj]) Clear properties of object
intern(str) Internalize str in the atom table
clone(fun[, scope]) Clone function object
getpda(obj) Get the property descriptors for obj
getslx(obj) Get script line extent
toint32(n) Testing hook for JS_ValueToInt32
evalcx(s[, o])
Evaluate s in optional sandbox object o
if (s == '' && !o) return new o with eager standard classes
if (s == 'lazy' && !o) return new o with lazy standard classes
if (s == 'split' && !o) return new split-object o with lazy standard classes
evalInFrame(n,str,save) Evaluate 'str' in the nth up frame.
If 'save' (default false), save the frame chain
shapeOf(obj) Get the shape of obj (an implementation detail)
resolver(src[, proto]) Create object with resolve hook that copies properties
from src. If proto is omitted, use Object.prototype.
sleep(dt) Sleep for dt seconds
scatter(fns) Call functions concurrently (ignoring errors)
snarf(filename) Read filename into returned string
read(filename) Synonym for snarf
compile(code) Compiles a string to bytecode, potentially throwing
parse(code) Parses a string, potentially throwing
timeout([seconds])
Get/Set the limit in seconds for the execution time for the current context.
A negative value (default) means that the execution time is unlimited.
elapsed() Execution time elapsed for the current context.
parent(obj) Returns the parent of obj.
wrap(obj) Wrap an object into a noop wrapper.
serialize(sd) Serialize sd using JS_WriteStructuredClone. Returns a TypedArray.
deserialize(a) Deserialize data generated by serialize.
mjitstats() Return stats on mjit memory usage.
stringstats() Return stats on string memory usage.
newGlobal(kind) Return a new global object, in the current
compartment if kind === 'same-compartment' or in a
new compartment if kind === 'new-compartment'
Incomplete list of things I have noticed:
Objects that do NOT exist: document window console FileReader
Objects that DO exist: JSON
Probably better to use nodejs. See my article
http://www.davekb.com/search.php?target=nodejs+command+line