<body></body>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script>
    var a=function(i){
        return function(){
            alert(i);
        }
    }("sdadsa"); // 执行后 a = function() { alert(i); };
    a(); // 调用后,弹出提示框。
</script>

解决方案 »

  1.   

    下面这个代码为什么弹出的是“undefined”啊?
    return function()改为return function(i)
    <body></body>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script>
        var a=function(i){
            return function(i){
                alert(i);
            }
        }("sdadsa"); // 执行后 a = function() { alert(i); };
        a(); // 调用后,弹出提示框。
    </script>
      

  2.   


    <body></body>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script>
        var a=function(i){
            return function(i){ // 这儿块就不要再传参数了,否则会屏蔽之前传进来的那个字符串("sdadsa")
                alert(i);       // 父函数中的i被局部i屏蔽了,此处并没有传参数,所以是undefined
            }
        }("sdadsa");
        a(); // 这儿块并没有传参数
    </script>