javascript - 将内部 var 的范围扩展到另一个函数

标签 javascript scope

我相信您已经经历过很多次了,但我无法找出真正适合我需求的线程女巫。

如何让 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/

相关文章:

php - 操作完成后禁用提交表单

javascript - jquery在元素之间多次插入html

javascript - 如何重置 Canvas 路径样式?

javascript - 您如何使用 <input type ="button"> 使用 javascript 提交表单

javascript - 正确重置javascript中的全局变量?

javascript - Javascript "this"运算符如何处理范围?

javascript - JS 正则表达式挑战 : replacing recurring patterns of commas and numbers

ruby - 如何将Regexp.last_match传递给Ruby中的 block

javascript - 变量正在跳转到更高的范围?

javascript - Javascript 中奇怪的迭代变量作用域