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
关键字,但jquery
将this
分配给已选择的dom元素。我不确定使用this
是否可以在非jquery
情况下使用。如果没有,我想了解更多关于如何在javascript中使用作用域。
答案 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);
}