# 构建
cargo build --release
# REPL 模式
./target/release/v8_rs
# 执行文件
./target/release/v8_rs script.js
# 运行测试
cargo test42 // 整数
3.14 // 浮点数let x = 10; // 声明
x = 20; // 赋值(暂不支持)10 + 20 // 加法
30 - 10 // 减法
5 * 6 // 乘法
20 / 4 // 除法
(5 + 3) * 2 // 括号print(42); // 打印数字
print(x + y); // 打印表达式$ ./target/release/v8_rs
> let x = 10
10
> x + 20
30
> print(x)
10
> exit// script.js
let x = 10;
let y = 20;
print(x + y);$ ./target/release/v8_rs script.js
30use v8_rs::Engine;
let mut engine = Engine::new();
let result = engine.execute("10 + 20").unwrap();
println!("{}", result); // 30- 数字(整数和浮点数)
- 算术运算(+ - * /)
- 变量声明(let)
- print() 函数
- 括号表达式
- 注释(// 或 /* */)
- 字符串
- 布尔值
- 控制流(if/while/for)
- 函数定义
- 对象和数组
- console.log()(使用 print())
A: 文件模式下需要使用 print() 函数。
// ❌ 错误 - 无输出
let x = 42;
x * 2
// ✅ 正确 - 有输出
let x = 42;
print(x * 2);A: 多次调用 print()。
let x = 10;
let y = 20;
print(x);
print(y);
print(x + y);A: 暂不支持。请删除所有注释。
// ❌ 错误 - 会报错
// let x = 10;
// ✅ 正确
let x = 10;A: 会报错(与 Node.js 不同)。
print(10 / 0); // Error: Division by zerolet a = 10;
let b = 20;
print(a + b); // 30let x = 5;
let y = 3;
print((x + y) * (x - y)); // 16let a = 0;
let b = 1;
let c = a + b;
let d = b + c;
let e = c + d;
print(e); // 3$ echo "let = 10" > error.js
$ ./target/release/v8_rs error.js
Error: Parse error: Expected 'identifier', found 'Assign' at 0:4$ echo "print(10 / 0)" > error.js
$ ./target/release/v8_rs error.js
Error: Runtime error: Division by zero$ ./target/release/v8_rs nonexistent.js
Error reading file 'nonexistent.js': No such file or directory| 特性 | V8-RS | Node.js |
|---|---|---|
| 打印 | print(x) |
console.log(x) |
| 整数输出 | 42 |
42 |
| 浮点输出 | 3.14 |
3.14 |
| 除以零 | 错误 | Infinity |
| 文件模式 | 不自动打印 | 不自动打印 |
| REPL 模式 | 自动打印 | 自动打印 |
-
使用 print() 输出
print(result); // ✅ 正确 result; // ❌ 文件模式无输出
-
避免除以零
if (y != 0) { // ❌ 暂不支持 if print(x / y); }
-
删除注释
// 删除所有注释 let x = 10;
-
使用发布版本
cargo build --release # 更快
快速参考完成!开始使用 V8-RS 吧!