从嵌套函数中的范围访问javascript var

时间:2016-02-27 17:13:47

标签: javascript

这是我的代码片段:

function doSomething() { 
    var clipId;
    funtion doSomethingElse(clipId) {
        this.clipId = clipId;
    }
}

但是,这不起作用,因为this指向窗口对象而clipId不是全局变量,它在doSomething函数中定义。

我知道我可以更改传递给第二个函数的参数的名称,例如我可以将clipId参数的名称更改为clipId1,然后执行{{ 1}}在第二个函数中。但是,我不想要那个。我希望var和参数具有相同的名称。

3 个答案:

答案 0 :(得分:2)

我不认为有办法在不更改任何名称的情况下执行此操作。如果使用局部变量从父作用域中隐藏变量,则它将变得不可访问。

答案 1 :(得分:0)

您可以使用二传手。

function doSomething() { 
    var clipId;
    function setClipId(value) {
        clipId = value;
    }
    function doSomethingElse(clipId) {
        setClipId(clipId);
    }
}

但我想你希望有一些语法可以在没有这些额外结构的情况下做到这一点。然后,正确的答案是Matti's one imo。

答案 2 :(得分:0)

由于"关闭"在JavaScript中,你完全不需要参数。 这将有效:

function doSomething () { 
    var clipId;
    funtion doSomethingElse () {
        this.clipId = clipId;
    }
}

因为doSomethingElse()可以访问其范围内的变量(在这种情况下,可以访问doSomething()的变量clipId