来自不同范围变量的javascript回调函数未定义

时间:2015-12-08 05:42:40

标签: javascript jquery

function coolo()
{
    var tile1 = -1;
    var tile2 = -1;
    $(".grid-cell").click(swap);
}


function swap()
{
    console.log(tile1)
}

coolo();

我当然会收到Uncaught ReferenceError: tile1 is not defined错误。我可以通过将变量传递给函数或将变量放在全局范围内来解决它。 swap函数是否有办法访问coolo范围内的变量?我可以访问全局范围内的变量,为什么不呢?我尝试使用this关键字,但jquerythis分配给已选择的dom元素。我不确定使用this是否可以在非jquery情况下使用。如果没有,我想了解更多关于如何在javascript中使用作用域。

3 个答案:

答案 0 :(得分:1)

你必须将一个参数传递给该函数,但你可以使它更通用

function coolo()
{
    var tile1 = -1;
    var tile2 = -1;
    $(".grid-cell").click(function(){swap(title1)});
}


function swap(title)
{
    console.log(tile)
}

coolo();

答案 1 :(得分:1)

您想了解范围,这将有效。由于您只在swap内使用coolo,因此没有理由不将swap放入coolo函数中,因此与tile1在同一范围内

function coolo() {
    var tile1 = -1;
    var tile2 = -1;
    var swap = function () {
        console.log(tile1)
    }
    $(".grid-cell").click(swap);
}

coolo();

答案 2 :(得分:0)

将它定义为这两个函数之外的全局变量或使用window.title

var title 
function A(){

}
function B(){

}

或将其作为参数传递给第二个函数

function A(){
  B(title);
}
相关问题