【JS的函数细节2】
【示例】
<html>
<head>
</head>
<body>
<script type="text/javascript">
function getSum(){
return 100;
}
var sum = getSum();
alert("sum="+sum);//弹出100
//==============================
var sum1 = getSum;
alert("sum="+sum);//弹出sum=function getSum(){return 100;}
/*图解详见桌面文件vedio31JavaScript16,解释如下:
*
*图中左边是堆内存,右边是栈内存,定义函数getSum(),进栈,那么栈内存中就有了函数对象,其内维护了一个arguments数组,然后
*堆内存中就有getSum指向了栈内存中的函数对象,其实getSum就是栈内存中函数对象的一个名字,如果调用函数:
* var sum = getSum();
*那么在就是通过堆内存中的getSum找到了栈内存中的函数对象,调用其功能得到返回值100;
*如果:
* var sum = getSum;
*其实就是堆内存的getSum将栈内存中的函数对象的地址值给了sum,此时sum通过该地址值指向栈内存中的函数对象,其实这时候该函数
*对象具有两个名称:getSum和sum,然后将sum以字符串形式输出,所以我们上面看到弹出的是代码。
*/
//==============================
function show2(){
alert("show2 run");
}
alert(show);//弹出函数代码,原因同上
//==============================
function show3(){
alert("haha");
}
alert(show3());//连续弹出2个对话框,第一个haha,第二个undefined,因为show3()运行之后没结果
</script>
</body>
</html>