var authorName="山边小溪";
function doSomething(){
var blogName="梦想天空";
function innerSay(){
alert(blogName);
}
innerSay();
}
alert(authorName); //山边小溪
alert(blogName); //脚本错误
doSomething(); //梦想天空
innerSay() //脚本错误
这段代码刚从晚上看到的
请教下innerSay() //脚本错误 为什么会出现错误啊?
doSomething(); //梦想天空 为什么又能正确输出结果呢?想了半天没绕过来
不是里面的可以访问外面的变量,而外面的访问不了里面的吗?

解决方案 »

  1.   

    <script type="text/javascript">
    var authorName="山边小溪";
    function doSomething(){
    var blogName="梦想天空";
    function innerSay(){
    alert(blogName);
    }
    innerSay();
    }
    alert(authorName); //山边小溪
    alert(blogName); //脚本错误      blogName是在doSomething里定义的局部变量,这里不能使用
    doSomething(); //梦想天空
    innerSay() //脚本错误      innerSay()在doSomething里定义的局部函数,这里不能使用
    </script>
      

  2.   

    不是有作用域的问题吗 
    function innerSay(){
    alert(blogName);
    }
    这个函数里面 没有blogName,他不是会往上查找吗?然后找到doSomething里面的blogName,然后就输出了吗?
      

  3.   

    这个问题楼上已经给你说的很清楚了。。根本就没有调用innerSay()这个方法