首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PowerShell中的全局变量和局部变量

PowerShell中的全局变量和局部变量
EN

Stack Overflow用户
提问于 2014-06-27 00:29:42
回答 1查看 41.3K关注 0票数 10

我有全局变量,并希望在函数中使用它们。

我不会在函数中使用同名的局部变量!

代码语言:javascript
运行
复制
# Global variables:
$Var1 = @{ .. }
$Var2 = @( .. )
function testing{
    $Var1.keyX = "kjhkjh"
    $Var2[2]   = 6.89768
}

我这样做了,它是有效的,但它是安全的,还是我必须使用以下方法?

代码语言:javascript
运行
复制
$Global:Var1.keyX = "kjhkjh"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-27 04:44:29

在您的函数中,您正在修改哈希表的内容,因此不需要使用$global,除非您的函数(或者您的函数和全局作用域之间的函数调用者)恰好有局部变量$Var1和$Var2 (顺便说一句,您不会缺少$)。如果这些都是你自己的代码,那么我会说让它保持原样。但是,如果您的代码允许其他人的代码调用您的函数,那么我将使用$global:Var1说明符来确保您访问的是全局变量,而不是无意中访问调用您的函数的函数中具有相同名称的变量。

关于PowerShell中动态作用域的另一件事是,当你给一个函数中的变量赋值,而这个变量恰好是一个全局变量时,例如:

代码语言:javascript
运行
复制
$someGlobal = 7
function foo { $someGlobal = 42; $someGlobal }
foo
$someGlobal

PowerShell将在函数内的变量$someGlobal上执行“写入时复制”操作。如果您的意图是真正修改全局变量,那么您可以使用$global:说明符:

代码语言:javascript
运行
复制
$someGlobal = 7
function foo { $global:someGlobal = 42; $someGlobal }
foo
$someGlobal
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24435745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档