alert(a); var a = function(){ alert('DFS'); }alert(a); var a = function(){ alert('DFS'); }
上个贴错了 alert(a); var a = function(){ alert('DFS'); }alert(a); function a(){ alert('DFS'); }
谢谢chang_yuan_2011的耐心,我明白你的意思, 你能不能直接回答一下我这个问题,比如下面这个定义,在没有任何调用的情况下: var a = function(){ alert('DFS'); }a是不是存在栈中,它里面存了个地址,这个地址指向堆中的函数体: function(){ alert('DFS'); } 实际是不是这样呢
函数名是指针,函数是对象 var a=function(){alert(1);} 左边是函数指针,右边是函数体是对象。 var a=function(){alert(1);} var b=function(){alert(1);} 即使函数体内容相同,但是存放它们的地址不同,所以a和b的引用地址不一样,于是a!=b
我该怎么理解这个
m=function(){return 2}
n=function(){return 2}
n为什么不等于m啊? m,n里存的是什么?地址吗? 是什么地址
var obj = new Object(); obj存储在栈中它指向于new Object()这个对象,而new Object()是存放在堆中的。既然说函数m=function(){return 2}是个对象,是不是这样?
m存储在栈中,它指向于new Function(return 2")这个对象
当发生函数调用的时候,栈空间中存放的数据是这样的:
调用者函数把被调函数所需要的参数按照与被调函数的形参顺序相反的顺序压入栈中,即:从右向左依次把被调函数所需要的参数压入栈;
][/color]难道说函数不调用的时候存在堆里面,调用的时候出现在栈里,是这样吗? 哪位可以稍稍系统的说说
m=function(){return 2}
n=function(){return 2}
你上面这里是两个函数的表达式,当执行到函数所在的语句时,m,n就会保存对函数的引用,在执行之前他们的值是undefined(如果不懂可以上网搜一下函数表达式跟函数声明的区别)。m,n引用的是不同对象,怎么可能相等呢?
var a = function(){
alert('DFS');
}alert(a);
var a = function(){
alert('DFS');
}
alert(a);
var a = function(){
alert('DFS');
}alert(a);
function a(){
alert('DFS');
}
你能不能直接回答一下我这个问题,比如下面这个定义,在没有任何调用的情况下:
var a = function(){
alert('DFS');
}a是不是存在栈中,它里面存了个地址,这个地址指向堆中的函数体:
function(){
alert('DFS');
}
实际是不是这样呢
var a=function(){alert(1);}
左边是函数指针,右边是函数体是对象。
var a=function(){alert(1);}
var b=function(){alert(1);}
即使函数体内容相同,但是存放它们的地址不同,所以a和b的引用地址不一样,于是a!=b