PowerShell范围行为?

时间:2019-05-01 02:58:45

标签: powershell scope

我确实读过the docs regarding scope,但是我似乎无法解释以下内容。

考虑以下代码:

# Function - increment global variable, append to global string? ...
function test() {
    $g_num++
    Write-Host $g_num
    $g_str = $g_str + "X"
    Write-Host $g_str
}

#===========================================================

# Init global integer and string ...
$g_num = 5
$g_str = "STRING: "

# Call our function 3 times ...
test
test
test

Write-Host "After function calls:"
Write-Host $g_num
Write-Host $g_str

上面的代码在执行时会产生以下结果:

6
STRING: X
6
STRING: X
6
STRING: X
After function calls:
5
STRING: 

在第一次调用函数test()时,全局整数变量似乎按预期方式增加了一个(值从5变为6),并且全局字符串再次附加了“ X”如预期的那样。

但是,在接下来的两次调用“ test”函数时,变量值不会改变。此外,调用完成后,变量将具有其原始值。

很明显,我丢失了一些东西-我认为(显然是错误的)在任何函数外部声明的变量都具有全局作用域-但相反,它们“似乎是全局的”,而不是?

有人可以解释这种行为吗?

0 个答案:

没有答案