使用GopherJS进行基本的“获取变量值”

时间:2017-12-17 12:06:00

标签: javascript variables go 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

我做错了什么?

1 个答案:

答案 0 :(得分:1)

js.Global并没有像你认为的那样做。

js.Global变量为documented as

  

Global提供JavaScript的全局对象("窗口"用于浏览器和" GLOBAL"用于Node.js)。

这意味着:

js.Global.Get("key")

正在浏览器中访问window.key,或者在Node.js中访问GLOBAL.key,而不是全局变量key,正如您正在尝试的那样。

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