• 授权协议:MIT
  • 开发厂商:-
  • 软件语言:Google Go
  • 更新日期:2018-03-21
ottoGo

otto 是 用原生 Go 编写的 JavaScript 解析器和解释器。

ottoGo Go 中的 JS 解释器 项目简介

otto 是 用原生 Go 编写的 JavaScript 解析器和解释器。import (
   "github.com/robertkrimen/otto"
)在 VM 中运行vm := otto.New()
vm.Run(`
    abc = 2 + 2;
    console.log("The value of abc is " + abc); // 4
`)获取 VM 外的值if value, err := vm.Get("abc"); err == nil {
    if value_int, err := value.ToInteger(); err == nil {
fmt.Printf("", value_int, err)
    }
}设置数字vm.Set("def", 11)
vm.Run(`
    console.log("The value of def is " + def);
    // The value of def is 11
`)设置字符串vm.Set("xyzzy", "Nothing happens.")
vm.Run(`
    console.log(xyzzy.length); // 16
`)获取表达式的值value, _ = vm.Run("xyzzy.length")
{
    // value is an int64 with a value of 16
    value, _ := value.ToInteger()
}抛出错误value, err = vm.Run("abcdefghijlmnopqrstuvwxyz.length")
if err != nil {
    // err = ReferenceError: abcdefghijlmnopqrstuvwxyz is not defined
    // If there is an error, then value.IsUndefined() is true
    ...
}设置 Go 函数vm.Set("sayHello", func(call otto.FunctionCall) otto.Value {
    fmt.Printf("Hello, %s.\n", call.Argument(0).String())
    return otto.Value{}
})在 JS 中使用函数result, _ = vm.Run(`
    sayHello("Xyzzy");      // Hello, Xyzzy.
    sayHello();             // Hello, undefined

    result = twoPlus(2.0); // 4
`)

ottoGo Go 中的 JS 解释器 评论内容