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

问题描述 投票:2回答:1

我正在尝试使用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

我究竟做错了什么?

javascript variables go gopherjs
1个回答
1
投票

js.Global没有做你认为它做的事情。

js.Global变量是documented as

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

这意味着:

js.Global.Get("key")

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

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

© www.soinside.com 2019 - 2024. All rights reserved.