AutoHotkey中,全局变量与局部变量的作用域要缕清。
已知一个 变量名foo,被一个全局变量 和 一个函数中的局部变量 使用。
在该函数中,
- foo默认是局部变量。直接使用foo,其内容为空。
- 双重解引用的变量,优先解引用为全局变量。例如 foo被double-def(双重解引用)使用,则foo为全局变量。具体参见测试脚本 。测试脚本
- 当全局变量foo为super global变量(显式global修饰),所有函数中的 foo默认为该全局变量。
- 如果全局变量foo没有global修饰,则 函数中的foo默认仍为局部变量,除非在函数内声明如下(二选一)。
- 函数体内声明
global foo
- 函数体首行声明
global
,标记 函数内所有变量都在全局作用域内。
- 函数体内声明
test
test
测试脚本
双重解引用的变量,优先全局变量。
global ggname := "i am global"
teststh() {
def := "ggname"
str := %def%
SendInput % str ; or SendInput % %def%
)
:*?:;y::
teststh()
Return