解决方案 »

  1.   

    为了让最外层的{}不要被eval理解成为Javascript的代码块的开始.而是理解成为一个对象字面量
    你写成这样也是一样的var jsonStr = '{"a":1}';
    eval('var jsonObj = '+jsonStr);
    alert(jsonObj.a);
      

  2.   

    受教了!js没有块级作用域,居然花括弧还可以用来分割代码块。试了下,真的可以耶:function blockTest(){
      {
         var varInBlock = 1;
      }
      {
         //anotherCodeBlock
      }
      return varInBlock ;
    }
      

  3.   

    定义和用法:eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。我觉得是这样的:eval函数是接收一个javascript代码字符串作参数。简单讲就是参数必须是可执行的js脚本或者是js变量,如果是变量就返回变量值,如果是可执行的代码就执行代码。但不接收不可运行的js脚本作参数,其中{}就是之一。<script type="text/javascript">
        {"a":1} //报错,所以eval("{'a':1}")不可执行
        ({"a":1}) //正常执行,所以可以使用eval("({'a':1})")
        var a="2";
        alert(eval("a"));//返回2
        eval("var b=2");//等价于 var b=2
    </script>
      

  4.   

    如果你以类C语言{}来表示块作用域,那js是没有块作用域。js实现块作用域是函数function(){}.特别是闭包函数
    (function(){
      //私有空间
    })()
      

  5.   


    +1
    加括号就是把它变成一个表达式,使json可以直接被js理解。
      

  6.   

    js没有块级作用域,但是js的{}可以用作代码块的分割符。因此裸露的{}不作为右值时,会被首先识别为代码块分隔符,而不是对象字面量起始点符。可以结贴了。
      

  7.   

    我这个怎么不行呢?
    var JsonStr = '{"Longitude":"121.42109136393228,"Latitude":"31.202927391153974","Address":"上海市徐汇区中山西路1065号","TrackTime":"2013-12-13 13:20:53"},{"Longitude":"121.42183141520181,"Latitude":"31.202990333658857","Address":"上海市徐汇区中山西路55号","TrackTime":"2013-12-13 13:20:56"},{"Longitude":"121.42360143473306,"Latitude":"31.20377234659831","Address":"上海市徐汇区西路065号","TrackTime":"2013-12-13 13:20:59"}';//这里必须用单引号,双引号会认为是语法错误的
        var map = new BMap.Map("container");
        map.centerAndZoom(new BMap.Point(121.420, 31.195), 15);
                    map.enableScrollWheelZoom();
    //                map.addControl(new BMap.NavigationControl());
    //                map.addControl(new BMap.ScaleControl());
    //                map.addControl(new BMap.OverviewMapControl({ isOpen: true }));
        // 创建地理编码实例
    //    var myGeo = new BMap.Geocoder();
                    //    map.centerAndZoom(new BMap.Point(121.42109136393228,31.202927391153974), 15);
                    //                alert(JsonStr);
    //                var JsonObj = eval(JsonStr);
    //                var JsonObj = eval('([' + JsonStr + '])');
                    eval("var JsonObj=([" + JsonStr + "])");