为什么可以使用Powershell

时间:2017-05-29 03:26:37

标签: powershell

我写了这段代码:

$var = 0
$array= @(1,2,3)

function changeData(){
    $var=1
    $array[0]=100
}

changeData

Write-host $var
Write-host $array

当我跑步时,我得到:

  

0

     

100 2 3

我理解为什么变量$var仍为0。 我们无法修改父作用域中的变量,除非我们添加global关键字,如下所示:

function changeData(){
    $global:var=1
    $array[0]=100
}

但是,我无法理解为什么$array已更改为@(100,2,3)$array也在父作用域中。但不知何故,它可以在函数changeData()中进行更改。

你能告诉我为什么会出现这种差异吗?

1 个答案:

答案 0 :(得分:0)

执行:$array[0] = 100时,它等同于向对象调用此方法:$array.SetValue(100,0)。在对象上调用方法不受范围的限制,因此这将生效。

请注意,调用后$array不会发生变化,当然,在changeData()内执行此操作也不会:$array = @(4, 5, 6)