错误传递函数作为函数值

时间:2017-01-21 18:51:07

标签: javascript function callback

我理解如何将匿名函数作为函数参数传递:

function FUNC(value1,callback) {
   alert(value1);
   callback();
}

function LOAD() {
// this function gets called when the page initially loads
   var UN = document.getElementById('username');
   FUNC('some value', function(){alert('user name: ' + UN.value)});
}

但我遇到的问题是,如果函数as-a-parameter也有一个变量用于回调:

{{1}}

这会产生" ReferenceError:UN未定义"错误。我假设这是因为FUNC()的内部不知道来自LOAD()的变量UN。我怎样才能做到这一点?在某处使用.bind,.call,.apply?我找到了以下链接,但不确定它们是否适用。

Article 1

Article 2

1 个答案:

答案 0 :(得分:0)

所以在玩了几个小时的代码后,我意识到其中一个函数是添加回调,如:

...snip...
HTML += "<input type='button' id='btnOK' value='OK' onClick=\"dialog("+cb2+");\" />";
...snip...

document.getElementById('test').innerHTML = HTML;

这会导致问题,因为您无法向字符串添加函数。相反,正确的方法是执行以下操作:

...snip...
HTML += "<input type='button' id='btnOK' value='OK' />";
...snip...

document.getElementById('test').innerHTML = HTML;
document.getElementById('btnOK').onclick=function(){dialog(cb1)};

我只是想跟进,如果有人偶然发现了这个问题,他们至少会找到我找到的解决方案。