基本 "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.
我正在尝试使用 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.