为什么把       return red(); 的括号删掉改成       return red;这样,怎么会输出的是red()函数的整个源代码啊?
谁能说下原因.
<!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=gb2312" />
<title>无标题文档</title>
<script type="text/javascript">
var Num3 = 10;
function blue(Num1,Num2){
function red(){
return Num1 + Num2 + Num3;
}
return red();
}
var cheo = blue(1,2);
alert(cheo)

</script>
<style type="text/css">
</style>
</head>
<body>

</body>
</html>

解决方案 »

  1.   

    red() ==> execute function red
    red ==> red前者是你执行函数,并返回函数返回值
    后者是把red这个函数返回出去
    如果后者的话 你alert(cheo())试试
      

  2.   


    function red()
    {
     // 这个时候 red就是一个函数类型的变量
     // 所有函数类型的toString()方法返回的都是返回自己本身的源代码
     // alert方法会自动将其中的变量toString()
     // 如果你喜欢,还可以弹出alert函数的源代码,不过它被浏览器隐藏了
    }
    alert(red);
    alert(window.alert);
      

  3.   


    原来 alert方法会自动将其中的变量toString() !学习了