gojaES51

Go 实现的 ECMAScript 5.1(+)
授权协议 MIT
开发语言 Google Go
所属分类 Web应用开发、 浏览器/JS引擎
软件类型 开源软件
地区 不详
投 递 者 郤坚诚
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

goja 是一个 Go 实现的 ECMAScript 5.1(+)。

它不是 V8 或 SpiderMonkey 或任何其他通用 JavaScript 引擎的替代品,因为它更慢。它可以作为一种嵌入式脚本语言使用,或者可以作为避免非 Go 相关性的一种方式。

灵感来源于 otto 。

特性

  • 完全支持 ECMAScript 5.1

  • 通过几乎所有用 es5id 标记的 tc39 测试

  • 平均比 otto 快6-7倍,同时使用相当少的内存

基本示例

vm := goja.New()
v, err := vm.RunString("2 + 2")
if err != nil {
    panic(err)
}
if num := v.Export().(int64); num != 4 {
    panic(num)
}
 相关资料
  • 它为什么特别对待是2的幂的情况?只是为了表现吗? 它为什么拒绝数字?

  • 本节是对前两节内容的实践。我们以“词嵌入(word2vec)”一节中的跳字模型和“近似训练”一节中的负采样为例,介绍在语料库上训练词嵌入模型的实现。我们还会介绍一些实现中的技巧,如二次采样(subsampling)。 首先导入实验所需的包或模块。 import collections import d2lzh as d2l import math from mxnet import auto

  • 一、前言 上一章我们讲解了Memcached的消息回应机制《Memcached源码分析 - Memcached源码分析之消息回应(3)》。从这一章开始我们慢慢讲解Memcached是如何存储数据的。 讲解本章前,我们先看一个Memcached存储数据的item的基本结构。 //item的具体结构 typedef struct _stritem {     //记录下一个item的地址,主要用于

  • 本文向大家介绍MyBatis实现动态SQL的实现方法,包括了MyBatis实现动态SQL的实现方法的使用技巧和注意事项,需要的朋友参考一下 MyBatis 最强大的特性之一就是它的动态语句功能。如果您以前有使用JDBC或者类似框架的 经历,您就会明白把SQL语句条件连接在一起是多么的痛苦,要确保不能忘记空格或者不要在 columns列后面省略一个逗号等。动态语句能够完全解决掉这些痛苦。 ​尽管与动

  • 问题内容: hashCode方法的最佳实现中可接受的答案为查找哈希码提供了看似不错的方法。但是我是哈希代码的新手,所以我不太了解该怎么做。 对于1),选择哪个非零值有关系吗?是一样好其他数字,如:黄金? 对于2),我是否将每个值添加到c?如果我有两个字段都是一个,,,等? 我在这堂课上解释得对吗? 问题答案: 该值并不重要,它可以是您想要的任何值。质数将导致值的更好分布,因此首选。 您不必添加它们

  • 问题内容: 我刚刚开始学习android编程,并且对方法getResources()产生了疑问。我注意到,当我创建一个Resources对象时,我要做的就是: 第一个疑问是以下为什么我必须以这种方式做并且我不能使用java关键字 new ?我不应该这样做吗: 第二个疑问是:在文件的顶部,我导入了Resources类。 现在,我阅读了android api,它说getResources()是一个公共

  • 问题内容: AtomicInteger的getAndIncrement实现执行以下操作: 它不等于aVolatileVariable ++吗?(我们知道这是不正确的用法)。没有同步,我们如何确保此完整操作是原子的?如果在步骤1中读取了变量“ current”后,volatile变量的值发生了变化,该怎么办? 问题答案: “秘密调味料”在此调用中: 如果在读取 后 同时更改了原始易失性值,则该操作将

  • 异常消息: 由:rpt.engine.util.engineException:javax.xml.bind.jaxbException:Provider com.sun.xml.bind.contextfactory_1_0_1无法实例化:javax.xml.bind.contextfactory_1_0_1.jaxbException-with linked exception:[java.l