null: Wasm reference instruction
The ref.null reference instruction creates a null reference of a given heap type.
Try it
(module
(import "console" "log" (func $log (param externref)))
(func $main
ref.null extern
call $log ;; log a null externref
)
(start $main)
)
const url = "{%wasm-url%}";
await WebAssembly.instantiateStreaming(fetch(url), { console });
WAT syntax
ref.null heap_type
ref.null-
The
ref.nullinstruction.
Immediates
heap_type-
The heap type of the null reference to create. This can be an abstract heap type such as
func,externorany, or the name or index of a type defined in the module, for example$my_struct_type.
Operand stack
[] -> [output:(ref null heap_type)]
Binary encoding
| Instruction | Binary format | Example text => binary |
|---|---|---|
ref.null |
0xd0 ht:heap_type |
ref.null extern => 0xd0 0x6f |
Description
The ref.null instruction creates a reference that points to nothing. Null references are commonly used to initialize nullable reference-typed locals, globals, and table elements before a real reference is available, or to represent "no value" when calling functions that take a nullable reference.
Because ref.null is a constant instruction, it can be used in constant expressions, such as the initializer of a global or an item in an elem segment.
When a null reference is passed to JavaScript, it is converted to null.
To check whether a reference is null, use ref.is_null.
Specifications
| Specification |
|---|
| WebAssembly Core Specification> # -hrefsyntax-instr-refmathsfrefnullmathitht> |