代码是现成的,只是想深入理解一下,所以想听听众牛们的意见~用javascript调用XML数据的函数(其中的一个小function)如下:var CachedXML = new Object();
function GetXML(XMLID){                       --》参数是integer
var oXML = eval("CachedXML.XMLID"+XMLID);
if (oXML==null){
    return null;
} else {
    return oXML;
}
}急忙抄的,要是有字母符号啥的错大家别介意哈~
这个函数挺底层的,不知道还有没有调用到别的函数了。。其实我就是想知道,最后return的oXML是什么
谢谢大家了~

解决方案 »

  1.   

    eval 方法检查 JScript 代码并执行. eval(codeString)
    必选项 codestring 参数是包含有效 JScript 代码的字符串值。这个字符串将由 JScript 分析器进行分析和执行。说明
    eval 函数允许 JScript 源代码的动态执行。例如,下面的代码创建了一个包含 Date 对象的新变量 mydate :eval("var mydate = new Date();");
    传递给 eval 方法的代码执行时的上下文和调用 eval 方法的一样. 
      

  2.   

    测一下就知道返回的是null最主要的是理解eval
      

  3.   

    回2楼:我不太理解动态执行是什么意思- -|||
    请问eval("var mydate = new Date();"); 和直接创建一个mydate参数有区别咩。。?回3楼:好吧,我问的是在oXML不为null的时候返回的是啥。。?谢谢楼上两位了~
      

  4.   

    eval("CachedXML.XMLID"+XMLID); 
    CachedXML['XMLID' + XMLID];
    一样的效果eval解析需要注意对象的作用域oXML不为null返回oXML
      

  5.   

    理由:var CachedXML = new Object();  // 非主流写法, 正统 的:  var CachedXML ={}; 虽然二者一样
    function GetXML(XMLID){                      --》参数是integer 
    var oXML = eval("CachedXML.XMLID"+XMLID);      // 没必要用eval
    if (oXML==null){ 
        return null; 
    } else { 
        return oXML; 


    // 最牛B的写法var CachedXML ={};
    function GetXML(XMLID)
    {
       return CachedXML["XMLID"+XMLID] || null;
    }
      

  6.   

    这段代码的意思, 就是检查CachedXML  对象有没有 "XMLID"+XMLID 这个属性值, 如果有 返回这个属性值, 否则返回null例如下面这个测试,就返回abc
       CachedXML.XMLID10 = "abc";
       alert(GetXML(10))  // 显示abc
      

  7.   

    谢谢楼上,回答得很详细阿~=v=我现在看到过的例子都让我觉得用eval是多此一举阿。。
    请问有什么可以表现出eval优点的例子么=。=?
      

  8.   

    eval一般用于脚本的混淆,json的转化等
      

  9.   

    如果在页面中制作一个调试窗口(类似于.net的即时窗口),可以在页面正常浏览的时候弹出,并且在窗口中填写调试代码(ExtJs中有这么个窗口),这个时候就要用eval了function test(jsCode)
    {
       try
      {
         var returnValue = eval(jsCode);
         return {success : true, value: returnValue};
      }
      catch(ex)
      {
         return {success : false, msg:ex.message};
      }
    }