为了账号安全,请及时绑定邮箱和手机立即绑定

怎么才能修改的是函数外面传入的变量?

怎么才能修改的是函数外面传入的变量?

绝地无双 2019-03-14 22:18:18
请问下,怎么才能修改的是函数外面传入的变量,而不是修改copy的那一份。function minus_num(num) {  num -= 1}var a = 10while (num > 0){  minus_num(num)}console.log(a)  // 这里我想得到0,但是这里是无限循环
查看完整描述

6 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

function minus_num(num) {

  return num - 1

}


var a = 10


while (num > 0){

  num = minus_num(num)

}


console.log(a)  


查看完整回答
反对 回复 2019-03-29
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

function minus_num(num) {

  return num - 1

}


var a = 10


while (num > 0){

  a = minus_num(num)

}


console.log(a)  


查看完整回答
反对 回复 2019-03-29
?
斯蒂芬大帝

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)


查看完整回答
反对 回复 2019-03-29
?
MYYA

TA贡献1868条经验 获得超4个赞

向函数中传入引用类型的变量,且函数中不直接赋值,仅仅修改的话,可以达到你要的效果。
基本类型的变量 传进去的是拷贝一份副本,引用类型变量传进去的是引用地址

查看完整回答
反对 回复 2019-03-29
?
智慧大石

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) 


查看完整回答
反对 回复 2019-03-29
  • 6 回答
  • 0 关注
  • 639 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号