2016-09-26 67 views
0

很抱歉,如果這是一個愚蠢的問題,有一個心靈空白調用另一個函數中的一個陣列中的JavaScript

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

    return _ARRAY_OF_PAST_USERS 
} 

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

爲什麼是回報不確定,我怎樣才能登錄該數組的內容的第二功能在我的其他功能創建?

+0

你期望什麼?什麼是_ARRAY_OF_PAST_USERS? 'rr'不在範圍內 – Li357

回答

0

從我的理解,下面的代碼應該做你想要什麼:

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

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

好RR屬於功能getPassedUsers,所以removeFuteureUserArray無法看到它。我假設你想是這樣的 - >

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

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

你應該閱讀有關適用範圍:

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); 
} 
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是提供給所有),則涉及更復雜的解決方案的原型會更好。

相關問題