为什么logfunc
“未定义”?
var logfunc = function(obj) {
return function() {
console.log(obj)
}
}
t += '<a onclick="logfunc(this)"><</a>'
最佳答案
如果在全局范围fiddle之外声明对longfunc
的引用,将无法访问
我不主张通过省略var
在全局范围内直接声明变量,但这是一个很好的例子:
function setupStuff() {
var logfunc = function(obj) { //defined within setupStuff scope
/*...*/
}
t += '<a onclick="logfunc(this)"><</a>';
}
function setupStuffDifferently() {
logfuncB = function(obj) { //defined in the global scope
/*...*/
}
t += '<a onclick="logfuncB(this)"><</a>';
}
我宁愿看到函数像这样单独声明
t += '<a onclick="logfunc(this)"><</a>';
function logfunc(obj) { //this would work when assigned through `onclick`
/*...*/
}
如果您可以使用该选项,我建议您使用类似jQuery的库,该库在assigning and handling click events中提供了更大的灵活性。