6 回答

TA贡献1839条经验 获得超15个赞
function minus_num(num) {
return num - 1
}
var a = 10
while (num > 0){
num = minus_num(num)
}
console.log(a)

TA贡献1804条经验 获得超8个赞
function minus_num(num) {
return num - 1
}
var a = 10
while (num > 0){
a = minus_num(num)
}
console.log(a)

TA贡献1827条经验 获得超8个赞
通过函数修改传进来的变量,一个是不在函数内部定义改变量,让函数通过作用域去找到改变量并且修改。
还有一个就是通过函数的返回值,赋值给改变量。
这里是因为函数传参时,基本类型的话,是按值传递。题目中的a的数值被复制给了num,但是num的改变不会影响到a的变化。这点和写c或者c++之类的代码时不太一样。。
所以代码可以这样,不过不推荐这样写函数。通过返回值的,之前有人回答了,就不写了。
function minus_num(num) {
a -= 1
}
var a = 10
while (a > 0) {
minus_num()
}
console.log(a)

TA贡献1868条经验 获得超4个赞
向函数中传入引用类型的变量,且函数中不直接赋值,仅仅修改的话,可以达到你要的效果。
基本类型的变量 传进去的是拷贝一份副本,引用类型变量传进去的是引用地址

TA贡献1946条经验 获得超3个赞
使用对象的方式传参:
function minus_num(obj) {
obj.num -= 1
}
var obj = {num: 10};
var a = 10
while (obj.num > 0){
minus_num(obj)
}
console.log(a, obj)
添加回答
举报