TheDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/LadybirdBrowser/ladybird/llms.txt
Use this file to discover all available pages before exploring further.
js utility is a command-line JavaScript interpreter that implements the ECMAScript specification. It provides both a REPL (Read-Eval-Print Loop) for interactive JavaScript execution and script execution capabilities.
Usage
Basic syntax
Interactive REPL
Launch the REPL by runningjs without arguments:
- Line editing with syntax highlighting
- Multi-line input support
- Command history (saved to
~/.js-history) - Auto-completion for variables and properties
Execute scripts
Evaluate inline code
Command-line options
Script execution options
| Option | Description |
|---|---|
-c, --evaluate <script> | Evaluate the provided string as JavaScript code |
-m, --as-module | Treat input as an ES module instead of a script |
-p, --parse-only | Parse the script without executing it |
-l, --print-last-result | Print the last expression result |
Debugging options
| Option | Description |
|---|---|
-A, --dump-ast | Print the Abstract Syntax Tree |
-d, --dump-bytecode | Print the compiled bytecode |
-i, --disable-ansi-colors | Disable colored output |
-h, --disable-source-location-hints | Disable source location hints in errors |
-g, --gc-on-every-allocation | Run garbage collection after every allocation (for testing) |
--disable-debug-output | Disable debug output |
Display options
| Option | Description |
|---|---|
-s, --no-syntax-highlight | Disable live syntax highlighting in REPL |
-r, --raw-strings | Display strings without quotes or escape sequences |
Test262 support
| Option | Description |
|---|---|
--use-test262-global | Use Test262 global object ($262) for test compatibility |
The
--use-test262-global option enables the Test262 global object, which provides functions like $262.createRealm() and $262.evalScript() required by the official ECMAScript Test262 suite.REPL commands
The REPL provides several built-in commands:exit([code])
Exit the REPL with an optional exit code (defaults to 0).help()
Display available REPL commands.print(value)
Pretty-print a JavaScript value.loadINI(file)
Load an INI file and return its contents as a JavaScript object.loadJSON(file)
Load and parse a JSON file.save(file)
Save REPL input history to a file.Special variables
_
Access the result of the last expression:global
Reference to the global object:Examples
Running a JavaScript file
Executing code with modules
Debugging bytecode
Testing with raw output
Interactive exploration
Features
Syntax highlighting
The REPL automatically highlights JavaScript syntax:- Keywords in blue
- Strings in green
- Numbers in magenta
- Control keywords in cyan
- Identifiers in white
Error reporting
Detailed error messages with source location:Multi-line input
The REPL automatically handles multi-line expressions:Promise tracking
The interpreter warns about unhandled promise rejections:Implementation details
Global objects
Thejs utility provides two global object types:
- ReplObject - Used in REPL mode, includes REPL-specific functions
- ScriptObject - Used in script mode, minimal global environment
JavaScript engine
The utility uses LibJS, Ladybird’s JavaScript engine:- Full ECMAScript support
- Bytecode compilation and interpretation
- Garbage collection
- ES modules support
Console object
Full console API support:Platform support
Windows: REPL functionality is not supported on Windows due to LibLine dependency. Script execution works normally.
Related utilities
- test262-runner - Automated Test262 test suite runner
- wasm - WebAssembly runtime with JavaScript integration
Source code
Source file:Utilities/js.cpp