js function传递的参数和全局变量名相同,function内无法给全局变量赋值的问题

大致问题如下:

在js中,定义了全局变量,并且在某个function中,也传递了当前的变量名,然后在 function内部,给全局变量赋值,无法成功。

大致问题代码如下:

本次打印的结果是40,

下次调用这个方法,打印的结果还是40;外部的offset值并没有变化。

下次再次访问。

原因:

全局变量和 function里的变量名称相同,offset(外)为全局变量,offset(内)是局部变量,当在方法体内,对offset进行赋值的时候,因为重名,赋值动作会优先赋值给局部变量,所以function里面的赋值动作,结果是,  offset(内)= tempoffset;  offset(外)依然是最开始初始化时候的赋值。

在function结束后,offset(内)就已经结束了它的生命周期,再次调用,getPortShipsData(regionid, limit, offset);  这时的offset依然是全局变量里的20。

解决方法

1.改变全局变量名称,或者内部变量名称。不重复的情况下,就可以对全局变量进行赋值。

2.如果不允许改变变量名称,可以采用,window.offset=tempoffset,此时就是给全局变量命名。

3.还有一个蹩脚的处理办法,自己定义一个赋值的function。

function setoffset(data){

    offset=data;

}

在 getPortShipsData(regionid, limit, offset); 方法体的success里面直接调用,setoffset(tempoffset);

                    ——有时候自己挖的坑,在里面转悠好久,就是出不来,出来了发现,我去,就是这么简单个问题。根本问题还是基本功不够扎实。

你可能感兴趣的:(js function传递的参数和全局变量名相同,function内无法给全局变量赋值的问题)