未定义来自不同作用域变量的javascript回调函数 函数coulo() { 变量tile1=-1; var tile2=-1; $(“.grid cell”)。单击(交换); } 函数交换() { console.log(tile1) } coolo();

未定义来自不同作用域变量的javascript回调函数 函数coulo() { 变量tile1=-1; var tile2=-1; $(“.grid cell”)。单击(交换); } 函数交换() { console.log(tile1) } coolo();,javascript,jquery,Javascript,Jquery,当然,我会得到一个未捕获引用错误:tile1未定义错误。我可以通过将变量传递给函数或将变量放入全局范围来修复它。swap函数是否有办法访问coolo范围内的变量?我可以访问全局范围内的变量,为什么不呢?我尝试使用this关键字,但是jquery将this分配给已选择的dom元素。我不确定在非jquery的情况下使用this是否有效。如果没有,我想了解更多关于javascript中作用域的工作原理。您必须向该函数传递一个参数,但可以使其更通用一些 function coolo() { va

当然,我会得到一个
未捕获引用错误:tile1未定义
错误。我可以通过将变量传递给函数或将变量放入全局范围来修复它。
swap
函数是否有办法访问
coolo
范围内的变量?我可以访问全局范围内的变量,为什么不呢?我尝试使用
this
关键字,但是
jquery
this
分配给已选择的dom元素。我不确定在非
jquery
的情况下使用
this
是否有效。如果没有,我想了解更多关于javascript中作用域的工作原理。

您必须向该函数传递一个参数,但可以使其更通用一些

function coolo() { var tile1 = -1; var tile2 = -1; $(".grid-cell").click(swap); } function swap() { console.log(tile1) } coolo();
如果您想了解范围,这将起作用。由于您只在
coolo
内部使用
swap
,因此没有理由不将
swap
放在
coolo
功能内部,从而与tile1处于相同的范围内

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


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

coolo();

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

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

coolo();
或者将其作为参数传递给第二个函数

var title 
function A(){

}
function B(){

}

功能交换(tile1)
。单击(swap.bind(null,tile1))
您应该查找一些。您应该阅读JavaScript。是的!我以前看到过那个链接,但这就是我一直在寻找的链接!非常感谢。
function A(){
  B(title);
}