<script>
function   test(){ 
        var   a   =   "1"; 
        alert(a); 

function   test1(){ 
        var   a   =   "1"; 
        alert(a); 
        var   b   =   "2"; 
        alert(b); 

function zuhe(s1,s2){
//用字符串组成新的test函数
eval("test = function(){"+s1+s2+"} ")
}
str1 = "alert(11);"
str2 = "alert(12)"
</script>
<input type=button onclick = "test()" value="测试"/>
<input type=button onclick = "test = test1" value="换为新的函数"/>
<input type=button onclick = 'zuhe(str1,str2)' value='组成新的函数'/>

解决方案 »

  1.   

    L@_@K<!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>
        <title> new document </title>
        <meta name="generator" content="editplus" />
        <meta name="author" content="Gao YiXiang" />
        <meta name="email" content="[email protected]" />
        <meta name="keywords" content="javascript dhtml dom" />
        <meta name="description" content="I love web development." />
    </head>
    <body>
        <input type="button" onclick="test();" value="call test" />
        <input type="button" onclick="changeFunction('test')" value="Change Function" />
        <script type="text/javascript">
        <!--
    function test()
    {
        var a = "a";
        alert(a);
    }
    function changeFunction(sFunctionName)
    {
        var sAppend = "var b=\"b\"; alert(b);";
        var fTarget = eval(sFunctionName);
        var sFunction = fTarget.toString();
        var sLeftBrace = "{";
        var sRightBrace = "}";
        var leftBraceIndex = sFunction.indexOf(sLeftBrace)+1;
        var rightBraceIndex = sFunction.lastIndexOf(sRightBrace);
        eval(sFunctionName+"=function(){"+sFunction.slice(leftBraceIndex,rightBraceIndex)+sAppend+"}");
    }
        //-->
        </script>
    </body>
    </html>
      

  2.   

    挺有趣的提问,其实也就是说函数不一定是function xx(){}的形式,也可以是xx=function(){},只是前者的形式的页面载入时会先解释。