在JavaScript

时间:2016-09-26 16:09:41

标签: javascript arrays function return

很抱歉,如果这是一个愚蠢的问题,请注意空白

function getPassedUsers(){
  var rr = ['a'];

  return _ARRAY_OF_PAST_USERS
}

function removeFromFutureUsersArray(users){
  getPassedUsers();
  console.log(rr);
};

为什么返回undefined,如何获取第二个函数来记录在我的其他函数中创建的数组的内容?

4 个答案:

答案 0 :(得分:0)

根据我的理解,下面的代码应该做你想要的:

function getPassedUsers(){
  var rr = ['a'];
  return rr;
}

function removeFromFutureUsersArray(users){
  var rr = getPassedUsers();
  console.log(rr);
};

答案 1 :(得分:0)

嗯rr属于函数getPassedUsers,因此removeFuteureUserArray无法看到它。我假设你想要这样的东西 - >

function getPassedUsers(){
  return ['a'];
}

function removeFromFutureUsersArray(users){
  var rr = getPassedUsers();
  console.log(rr);
};

答案 2 :(得分:0)

你应该读一下SCOPE:

var a=0;
{
var b=1;
alert(a);//0
alert(b);//1
}
alert(a);//0
alert(b);//undefined

变量只能在其范围内访问。所以{和}之间 因此,在您的情况下,您必须将其传递给其他函数,或者将其设为gobal:

var rr;
function func1(){
rr=["test"];
}
function func2(){
console.log(rr);
}

答案 3 :(得分:0)

在JS中,如果只需要一个访问所需函数集的单点,那么一个简单的闭包就可以完成这项工作。这可以简单地实现如下;

function passedUsers(){
  var rr = [];
  return { getPassedUsers  : function(){return rr;},
           insertPassedUser: function(u){rr.push(u)},
           removePassedUser: function(u){rr.splice(rr.indexOf(u),1);}
         };
}
var pu = passedUsers();
pu.insertPassedUser("john");
pu.insertPassedUser("jane");
console.log(pu.getPassedUsers());
pu.removePassedUser("john");
console.log(pu.getPassedUsers());

但是,如果您需要从不确定数量的对象访问这些函数,同时保持闭包完整(rr可供所有人使用),那么涉及更复杂解决方案的原型会更好。