如图所示,第 1 种定义方法是有效的,但是第 2 种显示b方法未定义,请问这是什么原因
<script>
function a(){
var b=function(){
alert('try');
}
return b;
}
var c=a();
var newHtml = '<div class="aa" onclick="c();">the new div</div>';
$('body').append(newHtml);
</script>
这样应该可以吧
html的onclick里的b方法指向window.b
第一种全局定义,实际上就是window.b
第二种b是a方法的局部变量,执行时找不到window.b
在第二种方法里,b()
是局部变量,只能在a()
的函数体内被访问到。通过onclick="b();"
的方式只能访问全局作用域下的b()
,很显然全局作用域下b()
没有被定义。