全局变量功能改变无效

时间:2015-06-02 08:27:29

标签: powershell global-variables

我刚试过这段代码:

$m=2
function f
{
    $m=3
}
f
$m

我预计函数f会将$m更改为3.但实际输出仍为2.为什么? $m是一个全局变量,在f内是否有效?

1 个答案:

答案 0 :(得分:4)

不,我担心PowerShell不是这样设计的。您必须在scopes中进行思考,有关此主题的更多信息,请阅读PowerShell帮助about scopes

在PowerShell ISE / Console中输入:

help about_Scopes

简短的回答是,如果要更改全局范围内的变量,则应该解决全局范围:

$m=2
function f
{
    $Global:m=3
}
f
$m

Function内创建的所有变量在函数外部都不可见,除非您明确将它们定义为ScriptGlobal。最好将函数的结果保存在另一个变量中,这样就可以在脚本范围内使用它了:

$Number = 5

Function Foo {
     $Number * 10
}
$Result = Foo

# Now you can use the value outside the function:
"The result of the function was '$Result'"