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

请问下,怎么才能修改的是函数外面传入的变量,而不是修改copy的那一份。


function minus_num(num) {

  num -= 1

}


var a = 10


while (num > 0){

  minus_num(num)

}


console.log(a)  // 这里我想得到0,但是这里是无限循环


绝地无双
浏览 640回答 6
6回答

紫衣仙女

function minus_num(num) {  return num - 1}var a = 10while (num > 0){  num = minus_num(num)}console.log(a)  

胡说叔叔

function minus_num(num) {  return num - 1}var a = 10while (num > 0){  a = minus_num(num)}console.log(a)  

斯蒂芬大帝

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

MYYA

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

智慧大石

使用对象的方式传参:function minus_num(obj) {  obj.num -= 1}var obj = {num: 10};var a = 10while (obj.num > 0){  minus_num(obj)}console.log(a, obj) 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript