= 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 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 --= 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.