我是一個初學者,有一個簡單的問題,我真的希望有人可以幫助我。我有兩個全局函數(a和b)。我在函數a中調用了函數b。如何在不使用全局變量或參數的情況下從函數b訪問函數a中的本地代碼?我有兩個全局函數,如果我從函數1中調用函數2,我可以在函數2中訪問函數1中的本地代碼
實施例:
function a() {
var x= 5
b()
}
function b() {
var y= 8 + x
}
我是一個初學者,有一個簡單的問題,我真的希望有人可以幫助我。我有兩個全局函數(a和b)。我在函數a中調用了函數b。如何在不使用全局變量或參數的情況下從函數b訪問函數a中的本地代碼?我有兩個全局函數,如果我從函數1中調用函數2,我可以在函數2中訪問函數1中的本地代碼
實施例:
function a() {
var x= 5
b()
}
function b() {
var y= 8 + x
}
你要通過x
作爲參數如下功能b(x)
。
function a() {
var x = 5;
b(x);
}
function b(x) {
var y = 8 + x;
console.log(y);
}
a();
嘗試的話,可能是不一樣的要求。 (對不起我的英文不好)
function a() {
window.x= 5;
b();
}
function b() {
window.y= 8 + window.x;
}
您可以通過處理函數的參數做到這一點,您可以通過使用對象
實例傳遞的參數太多:
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();
注意:從上面的代碼,您可以通過返回變量作爲對象使用函數的局部變量到每個其他函數。
這裏是做明確你指的是什麼,通過創建一個封閉和傳遞範圍取消入一個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);
}
在你的情況,我確保你只想把它作爲一個變量b
像b(x)
或
function a(){return 5;}
function b(x){console.log(x + 8);}
b(a());
沒有 - 因爲[適用範圍]( https://developer.mozilla.org/en-US/docs/Glossary/Scope) –
爲什麼你不測試它,看看? –
「訪問本地代碼」是什麼意思? – Dai