基本 "Get Variable Value" 使用 GopherJS

Basic "Get Variable Value" Using GopherJS

我正在尝试使用 GopherJS,但找不到有关如何使用它的文档。

这是 Go 代码:

package main

import (
    "github.com/gopherjs/gopherjs/js"
)

func main() {
    t := js.Global.Get("key").Int()
    println(t)
    js.Global.Set("keySet", 4)
}

然后我使用GopherJS将其转换为JS并粘贴:

JS代码:

var key = 3

// Pasted GopherJS Code
"use strict";
(function() {
...
}).call(this);
// End GopherJS Code

console.log(keySet)

它打印:

0
4

为什么?它应该打印

3
4

这是我尝试过的方法(更改 Go 代码并重新转换):

func main() {
    t := js.Global.Get("key").Float()
    println(t)
    js.Global.Set("keySet", 4)
}

打印

NaN
4

func main() {
    t := js.Global.Get("key").Int64()
    println(t)
    js.Global.Set("keySet", 4)
}

打印

typ { '$high': 0, '$low': 0, '$val': [Circular] }
4

我做错了什么?

js.Global 并不像您认为的那样。

js.Global变量是documented as:

Global gives JavaScript's global object ("window" for browsers and "GLOBAL" for Node.js).

这意味着:

js.Global.Get("key")

正在浏览器中访问 window.key,或在 Node.js 中访问 GLOBAL.key,而不是您尝试执行的全局变量 key

更一般地说,如果您希望标准 JS 访问 GopherJS 生成的代码,您应该使用 js.Wrap 方法 as documented.