2016-11-16 44 views
0

我是一個初學者,有一個簡單的問題,我真的希望有人可以幫助我。我有兩個全局函數(a和b)。我在函數a中調用了函數b。如何在不使用全局變量或參數的情況下從函數b訪問函數a中的本地代碼?我有兩個全局函數,如果我從函數1中調用函數2,我可以在函數2中訪問函數1中的本地代碼

實施例:

function a() { 
    var x= 5 
    b() 
} 
function b() { 
    var y= 8 + x 
} 
+1

沒有 - 因爲[適用範圍]( https://developer.mozilla.org/en-US/docs/Glossary/Scope) –

+4

爲什麼你不測試它,看看? –

+0

「訪問本地代碼」是什麼意思? – Dai

回答

2

你要通過x作爲參數如下功能b(x)

function a() { 
 
    var x = 5; 
 
    b(x); 
 
} 
 

 
function b(x) { 
 
    var y = 8 + x; 
 
    console.log(y); 
 
} 
 

 
a();

-1

嘗試的話,可能是不一樣的要求。 (對不起我的英文不好)

function a() { 
    window.x= 5; 
    b(); 
} 

function b() { 
    window.y= 8 + window.x; 
} 
0

您可以通過處理函數的參數做到這一點,您可以通過使用對象

實例傳遞的參數太多:

function a() { 
 
    var x= 5,other_variable=100; 
 
    var objectsOfB = b({x:5,other_variable:other_variable}); /*Pass your object/variables to function b()*/ 
 
    console.log(objectsOfB); /*All variable from function b()*/ 
 
} 
 

 
function b(objectsOfA) { 
 
    console.log(objectsOfA); /*All variables from function a()*/ 
 
    var y= 8 + objectsOfA.x; 
 
    var more_variable = 200; 
 
    return {y:y,more_variable:more_variable};    /*Return all variable from function b() to function a()*/ 
 
} 
 

 
a();

注意:從上面的代碼,您可以通過返回變量作爲對象使用函數的局部變量到每個其他函數。

0

這裏是做明確你指的是什麼,通過創建一個封閉和傳遞範圍取消入一個b變量函數的一種方式。從本質上講,由於b是返回功能從a內,它保留範圍x,雖然x仍含有外範圍內不可用:

function a() { 
 
    var x = 10; 
 

 
    return function(){ 
 
    x++; 
 

 
    console.log(x); 
 
    }; 
 
} 
 

 
var b = a(); 
 

 
b(); // 11 
 
b(); // 12 
 
b(); // 13 
 
b(); // 14 
 

 
// Not defined in this scope. 
 
try { 
 
    console.log('x:', x); 
 
} catch(e) { 
 
    console.log('Exception! ', e); 
 
}

在你的情況,我確保你只想把它作爲一個變量bb(x)

function a(){return 5;} 
function b(x){console.log(x + 8);} 
b(a()); 
相關問題