我有这段代码:
var point = 2;
var change = function(){point = 5};
function makeChange(point,change){
change();
alert(point);
}
makeChange(point,change);
这个想法是让用户能够在函数中使用它之前传递值point
的条件。
但它没有生效。
当我将alert(point)
添加到change
函数时,它会提醒5,但会在makeChange
函数中提醒2。
答案 0 :(得分:1)
你可以在change()
中返回点var point = 2;
var change = function(){ return point=5; };
function makeChange(point,change){
alert(change);
}
makeChange(point,change());
答案 1 :(得分:0)
调用函数时可以执行类似的操作。
makeChange(point,function(){return change})
答案 2 :(得分:0)
您的代码运行正常 - 事实上,如果您在 @Override
public void onConnected(@Nullable Bundle bundle) {
LocationListener mListenerone = new LocationListener() {
@Override
public void onLocationChanged(final Location location) {
}
};
LocationRequest requestone = LocationRequest.create();
requestone.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
requestone.setInterval(100);
requestone.setFastestInterval(100);
LocationServices.FusedLocationApi.requestLocationUpdates(mLocationClient, requestone, mListenerone);
LocationListener mListenertwo = new LocationListener() {
@Override
public void onLocationChanged(final Location location) {
}
};
LocationRequest requesttwo = LocationRequest.create();
requesttwo.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
requesttwo.setInterval(10000);
requesttwo.setFastestInterval(1000);
LocationServices.FusedLocationApi.requestLocationUpdates(mLocationClient, requesttwo, mListenertwo);
}
之后立即执行alert(point);
,则会看到makeChange(point,change);
已返回。
令人困惑的是,数字(即2)通过值而不是引用(即点)传递到5
函数。因此,如果您在<{strong> makeChange
内警告point
,则会提供最初传递的值:makeChange
。
答案 3 :(得分:0)
我认为这段代码的问题是局部变量和全局变量之间的混淆。
因此,当您在函数makeChange(指向,更改)中传递变量时,当您调用change函数时,其函数makeChange的行为类似于函数makeChange,其变化的全局点值。 然后当你做警报时,因为在函数优先级是局部变量,所以你得到2。
你可以使用return方法。
var point = 2;
var change = function(){point = 5 return(point)};
function makeChange(point,change){
point=change();
alert(point);
}
makeChange(point,change);
答案 4 :(得分:0)
问题是因为您的参数与全局变量point
具有相同的名称。在下面的代码中:
var point = 2;
var change = function(){point = 5};
function makeChange(point,change){
change();
alert(point);
}
change()
内makeChange
的调用会将此处point
定义的本地参数makeChange(point,change)
分配给5
。不是全局point
,它将保持为2
。
解决此问题的一种简单方法是不在参数中使用与全局变量相同的名称point
。否则,由于确定了JavaScript,您会认为您正在考虑point
内部本地定义的makeChange
:
var point = 2;
var change = function(){point = 5};
function makeChange(Point,Change){
Change();
}
makeChange(point,change);
alert(point);
&#13;