JS: 一个方法修改另一个方法的局部变量?

时间:2021-02-21 10:29:13

function AA(){
    var a= 3;
    BB();
}
function BB(){
    ....
}

function AA(){
    var a= "3";
    BB(a);
}
function BB(){
    ....
}

BB要更改AA的变量 a.
第一种怎么实现?
第二种无法像C#那样改变.
请问要怎么做?

13 个解决方案

#1


为啥不声明称全局的那。
方法内的变量就是设计成方法内用的

#2


全局变量

#3


function AA(){
    var a= "3";
    a= BB(a);
}
function BB()
{
   return ....;
}

#4


该回复于2009-03-19 09:29:26被版主删除

#5


是这样的,我想知道 a 是字符串型的变量,为什么 BB() 没法改变 a 的值?就像C#中的那样?

#6


还有:我定义了一个对象.有些属性不想让对象以外的代码使用,我该怎么做?即实现类似于私有变量的效果.

#7


function BB(var x)
{

   var a=x;


  return a='4';

}



function AA()
{
   var a='3';

   BB(a);

   return a;

}

不知道你要的是不这个效果

#8


c#中还会一个js中一个也不会....郁闷,关注....

#9


引用 5 楼 mogui_ 的回复:
是这样的,我想知道 a 是字符串型的变量,为什么 BB() 没法改变 a 的值?就像C#中的那样?


BB()工作在自己堆栈中,它只能看到自己堆栈空间的变量地址和全局的变量地址,所以也只能对BB()内的局部变量读写或者全局变量的读写。如果按你所说的那样BB()函数内能操作其他函数的局部变量,那设置所谓的局部变量还有什么意义?干脆全局的变量都放在某个函数里面得了。

#10


类似于7楼的那样.

private void AA(){
    string str= "a";
    BB(str);
    
    Console.WriteLine(str);//str=="b"
}
private void BB(string str){
    str= "b";
}

在JS中能实现这样的功能吗?

#11


设置为全局变量

#12


设置为全局变量
就可以改了

#13


就是说没法像C#那样改了.
谢了上面的各位.

#1


为啥不声明称全局的那。
方法内的变量就是设计成方法内用的

#2


全局变量

#3


function AA(){
    var a= "3";
    a= BB(a);
}
function BB()
{
   return ....;
}

#4


该回复于2009-03-19 09:29:26被版主删除

#5


是这样的,我想知道 a 是字符串型的变量,为什么 BB() 没法改变 a 的值?就像C#中的那样?

#6


还有:我定义了一个对象.有些属性不想让对象以外的代码使用,我该怎么做?即实现类似于私有变量的效果.

#7


function BB(var x)
{

   var a=x;


  return a='4';

}



function AA()
{
   var a='3';

   BB(a);

   return a;

}

不知道你要的是不这个效果

#8


c#中还会一个js中一个也不会....郁闷,关注....

#9


引用 5 楼 mogui_ 的回复:
是这样的,我想知道 a 是字符串型的变量,为什么 BB() 没法改变 a 的值?就像C#中的那样?


BB()工作在自己堆栈中,它只能看到自己堆栈空间的变量地址和全局的变量地址,所以也只能对BB()内的局部变量读写或者全局变量的读写。如果按你所说的那样BB()函数内能操作其他函数的局部变量,那设置所谓的局部变量还有什么意义?干脆全局的变量都放在某个函数里面得了。

#10


类似于7楼的那样.

private void AA(){
    string str= "a";
    BB(str);
    
    Console.WriteLine(str);//str=="b"
}
private void BB(string str){
    str= "b";
}

在JS中能实现这样的功能吗?

#11


设置为全局变量

#12


设置为全局变量
就可以改了

#13


就是说没法像C#那样改了.
谢了上面的各位.