wiki:JSC

Version 5 (modified by mark.lam@apple.com, 9 years ago) (diff)

--

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.