具体代码如下:
function getData(){var d=[(function(){var val=null;...return val;})()][0];return d;};问题:
1.function getData(){var d=...; return d;}有必要这么写吗?直接var d=...;不好吗?
2.var d=[(function(){var val=null;...return val;})()][0],这都啥意思,具体解释,不懂啊

解决方案 »

  1.   

    可能是为了装13吧?
    按逻辑看,得到的应该是val。
    var d=[(function(){var val=null;...return val;})()][0]
    [(function(){var val=null;...return val;})()]是一个数组,里面是一个自执行函数,返回了val,其实结果只是[val]
    后面加一个[0]是获取val,然后d=就把val赋给d了。
    然后再return?原作者如此D疼?
      

  2.   

    var d=[(function(){var val=null;...return val;})()][0]里的return val,val应该是个数组,否则[0]就没有任何意义了。
      

  3.   


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>test</title>
    </head>
    <body>
    <script type="text/javascript">
    function getData(){var d=[(function(){var val=null;/*...*/return val;})()][0];return d;};//1.function getData(){var d=...; return d;}有必要这么写吗?直接var d=...;不好吗?
    //两者不一样,看下面
    //2.var d=[(function(){var val=null;...return val;})()][0],这都啥意思,具体解释,不懂啊
    //(function(){var val=null;...return val;})()表示定义一个匿名函数后,马上执行,并返回一个值
    //所以上面的代码可以分解成这样
    var fun = function(){var val=null;return val;}
    function getData(){
    var d = [fun()];//就和var d=[0,1,2]一样的,只不过用函数返回值来初始化
    var result = d[0];
    return result;
    }
    </script>
    </body>
    </html>