if...else
if 语句会在栈顶元素为 true(非零)时执行一条语句。如果条件为 false(0),则可以执行另一条语句。
试一试
(module
;; import the browser console object, you'll need to pass this in from JavaScript
(import "console" "log" (func $log (param i32)))
(func
i32.const 0 ;; change to positive number (true) if you want to run the if block
(if
(then
i32.const 1
call $log ;; should log '1'
)
(else
i32.const 0
call $log ;; should log '0'
)
)
)
(start 1) ;; run the first function automatically
)
const url = "{%wasm-url%}";
await WebAssembly.instantiateStreaming(fetch(url), { console });
语法
wat
i32.const 0
(if
(then
;; do something
)
(else
;; do something else
)
)
要将返回值保留在栈中,请添加 result 语句。
wat
i32.const 0
(if (result i32)
(then
;; do something
(i32.const 1)
)
(else
;; do something else
(i32.const 2)
)
)
(drop)
| 指令 | 二进制操作码 |
|---|---|
if |
0x04 |
else |
0x05 |