var b={}
(function(){
var a="aaa"
b.a=a
})()
alert(b.a)//出错

解决方案 »

  1.   

    这样也不行
    var b={}
    (function(){
    var a=function(){return "sss"}
    b.a=a()
    })()
    alert(b.a)//出错
      

  2.   

    表舍不得分号。
    var b={};
    (function(){
        var a="aaa"
        b.a=a
    })();
    alert(b.a)
      

  3.   

    估计是代码解析错误,养成好习惯~
    var b={};//加上;号试试
    (function(){
        var a="aaa"
        b.a=a
    })()
    alert(b.a)//出错
      

  4.   


    昨晚和某牛聊的时候,发现了这么个问题。test code 1:
    var a = function () {};//这个分号很重要!!!
    (function () {
        alert(1);
    })();test code 2:
    var a = 1;//这个分号很重要!!!
    (function () {
        alert(1);
    })();红字标识的分号,很重要!!
    执行的匿名函数的前一句语句如果没有用分号结束,脚本引擎会无法解析后面的匿名函数。突然一推想,终于明白jslint验证的时候为什么连a=function(){}这样的语句没有分号结束都要报错了。
      

  5.   

    为什么要加分号,这样你就理解了。
    var a = alert
    ("abc")这不,变成了函数调用。