日期:2014-05-16  浏览次数:20321 次

一个简单的局部变量的作用域问题
<script type="text/javascript">

function f(){

var a=5;

function(){

window.alert(a);
}

}

f();

</script>
JavaScript中,函数的局部变量(a)不是在整个函数中都有意义吗?为什么在匿名函数中不能读取a的值呢?菜鸟一枚,求指导。。。

------解决方案--------------------
f(),执行函数f
但你函数内部就只定义了一个局部变量a,和一个匿名方法
首先,这个a在你匿名函数内部是可以获取到的,但主要的是你这个匿名函数并没有执行,你若是想看效果,有两个办法,但原理都相同,就是使这个匿名函数自执行

JScript code

//1:这样的话就是将后面匿名函数立即执行,并将其返回值赋于b
var b=function(){
        alert(a);
}();
//对效果进一步理解,你使用以下方法就应该知道了
var b=function(){
        return "我是b的返回值";
}();
    alert(b);

//第2种就是匿名函数本身自执行
(function(){
        alert(a);
})();