Javascript I';已声明全局变量,但可以';t使用函数重新分配它
代码如下:Javascript I';已声明全局变量,但可以';t使用函数重新分配它,javascript,function,Javascript,Function,代码如下: var num = 3 myFunction(num) function myFunction(aNumber) { aNumber = 20 } console.log(num) 它仍然说'num'是3,我想知道为什么?您不必将全局变量传递到函数中来重新分配它们 function myFunction() { num = 20 } console.log(num); JS没有指针。您正在将20赋值给aNumber参数,该参数接收当前值num,但与num无关m
var num = 3
myFunction(num)
function myFunction(aNumber)
{
aNumber = 20
}
console.log(num)
它仍然说'num'是3,我想知道为什么?您不必将全局变量传递到函数中来重新分配它们
function myFunction() {
num = 20
}
console.log(num);
JS没有指针。您正在将
20
赋值给aNumber
参数,该参数接收当前值num
,但与num
无关myFunction(num)
从num
读取值3,并将值(不是变量)传递到myFunction
myFunction
接收参数aNumber
中的值aNumber=20
将值20存储在aNumber
中,这对num
没有任何影响,因为函数从调用中不知道任何关于num
的信息(它通过其他方式知道,但这与aNumber
参数无关)。myFunction
可以更新num
,直接执行num=20
,因为myFunction
是定义num
的上下文的闭包。如果它不是定义了num
的上下文上的闭包,它将无法直接更新它。通常通过函数更新变量的方法是让函数返回新值:num=myFunction(num)
和function myFunction(aNumber){return aNumber+10;}
,它向传入的值添加10并返回新值。在上面的例子中,这将返回13,然后将其分配给num
.True,但这假设函数总是希望变异num
变量。给定原始代码,它将能够对传入的任何变量进行变异(如果它以这种方式工作的话)。