JSC
jsc is a command-line utility that allows you to run JavaScript programs outside of the context of a web browser. It is primarily used as part of the test harness for validating the JavaScript portions of WebKit, but can also be used as a scripting tool.
jsc can be run in an interactive mode to test out JavaScript expressions, or it can be passed one or more files to run similar to invoking a Perl or Python script.
Usage
Command Line Flags
Usage: jsc [options] [files] [-- arguments] -d Dumps bytecode (debug builds only) -e Evaluate argument as script code -f Specifies a source file (deprecated) -h|--help Prints this help message -i Enables interactive mode (default if no files are specified) -s Installs signal handlers that exit on a crash (Unix platforms only) -p <file> Outputs profiling data to a file -x Output exit code before terminating --options Dumps all JSC VM options and exits --dumpOptions Dumps all JSC VM options before continuing --<jsc VM option>=<value> Sets the specified JSC VM option
Built-In Functions
checkSyntax('[FileName]')-
Check the syntax of the specified external JavaScript file
[FileName]. debug(term)- Prints a human-readable version of the passed argument.
gc()-
Perform a garbage collection. It will return
undefined. load('[FileName]')-
Load and execute the specified external JavaScript file
[FileName]. If the run is successful, it will return the final value of the script. quit()- Quit the interpreter
readline()- Read data from stdin. Mainly useful for writing test routines.
run('[FileName]')-
Load and execute the specified external JavaScript file
[FileName]. If the run is successful, it will return the elapsed milliseconds for the run. version()-
Currently does nothing. It will return
undefined.
Examples
You can use jsc as a calculator:
$ ./jsc > "hello" hello > 1 + 3 4 > 2 * Math.sin(32) 1.1028533624833812 > 2 * Math.floor(1.2) 2 > 2 * Math.ceil(1.2) 4 > 15.3 / 18 * 27.1 * (Math.ceil(1.3) * Math.exp(2.3) * Math.log (1.223) * Math.sin(32.22)) 66.6192983328985 > quit()
You can also test more complicated expressions:
> var add3 = function(arg) { return arg + 3; }
undefined
> add3(3)
6
> var foo = readline();
abcdefg
undefined
> foo
abcdefg
> quit()
The return value of undefined from the variable assignment is from the JavaScript specification. While it might seem like an odd response to a successful operation, it is the expected behavior.