我相信您已经经历过很多次了,但我无法找出真正适合我需求的线程女巫。
如何让 var inside 在outertwo 中工作?
function outerOne(){
/* do something*/
var inner = function(){
return true
}; inner();
};
outerOne()
function outerTwo(){
if (inner==true)
/* do something*/
};
outerTwo();
请注意,我知道可以在外部声明 var x 以使其成为全局变量。 但我想要实现的是从函数内部将 var 移出作用域
最佳答案
你尝试过吗:
var x;
function outerOne(){
/* do something*/
var inner = function(){
x = 5
console.log(x + " Works in inner()");
};
inner();
console.log(x + " Works in outerOne()");
};
outerOne();
function outerTwo(){
console.log(x + " Works in outerTwo()");
};
outerTwo();
函数仅与其父作用域中声明的变量共享作用域。
编辑
为了完整起见,我可能会补充一点,没有什么可以阻止您从函数中返回值:
function outerOne(){
/* do something*/
var inner = function(){
var x = 5
console.log(x + " Works in inner()");
return x;
};
var x1 = inner();
console.log(x1 + " Works in outerOne()");
return x1;
};
var x2 = outerOne();
function outerTwo(){
console.log(x2 + " Works in outerTwo()");
};
outerTwo();
关于javascript - 将内部 var 的范围扩展到另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15540325/