新手提问,关于函数赋值为null 的问题 <script> function fnTest() { alert('aaa'); } var fnObjRef = fnTest; fnTest = null; fnObjRef(); </script>为什么函数 fnTest 赋值为 null 后, fnObjRef 还可以调用呢?JavaScript函数 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <script> function fnTest() { alert('aaa'); } document.write(fnTest);//通过这句,证明fnTest是function,而不是变量 var fnObjRef = fnTest; //fnTest = null;//有没有都一样,可以注释掉 fnObjRef();//由于var fnObjRef = fnTest的赋值,使得fnObjRef产生与fnTest相同结构的函数</script> <script> function fnTest() { alert('aaa'); } document.write(fnTest);//通过这句,证明fnTest是function(一个函数,也可叫做一个方法),而不是变量 var fnObjRef = fnTest;//这句把fnTest函数的赋值给fnObjRef document.write("<br />"); document.write(fnObjRef);//输出function fnTest() { alert('aaa'); },证明fnObjRef成为了function fnTest = null; document.write("<br />"); document.write(fnTest);//此时会输入null,说明这个时候fnTest被null赋值,不过这倒是不影响后面 fnObjRef();//由于var fnObjRef = fnTest的赋值,使得fnObjRef产生与fnTest相同结构的函数 //最后这句,是调用fnObjRef方法,也就是执行最上面的 function fnTest(){alert('aaa');} //所以会弹出aaa //以上在IE和火狐测试过</script>大侠你天资聪颖,想必一定能明白,不明白再问我就可以了 引用类型。 function fnTest() { alert('aaa'); }函数保存到一个内存区域: ox25845fnTest 保存函数的内存地址 ox25845。 var fnObjRef = fnTest; 传地址,fnObjRef 和fnTest 的值都是:ox25845 fnTest = null; // fnTest指向空。但是 fnObjRef 还是用了ox25845。内存区域: ox25845始终还存在。具体 内存区域: ox25845 什么时候会被浏览器回收。不同浏览器机制不一样。去网上搜索吧 函数时引用类型你可以把引用类型看做路标,通过该路标可以找到目的地var fnObjRef = fnTest;//表示两个路标指向同一个目的地fnTest = null;//你把其中一个路标fnTest摘掉了,它没了,但另一个路标fnObjRef仍然存在,fnObjRef仍然指向目的地 <script>function fnTest(){ alert('aaa');} var fnObjRef = fnTest;//此时的fnObjRef已经成型fnTest = null; //只是影响fnTest,但是不影响fnObjRefdocument.write(fnObjRef+"<br />");fnObjRef = fnTest;//如果此时再加这句,就会影响document.write(fnObjRef);fnObjRef();//此时已经无作用了</script>fnTest也就是函数内存地址的指针如果想让他们都没作用,需要都指向空值 纠结的P窗体..... JSP乱码问题 页面刷新用js怎么写 点击一个按钮,把一个DIV里面的所有元素隐藏,再次点击则全部显示? 关于从https跳至http时session丢失的问题(再发)? javascript能否做立体饼图?谢谢! 如何实现:鼠标放到上面,就出一个菜单? 一个简单的问题 文件上传控件的赋值问题 保存text 在上个月下个月切换时text 内容不消失 10款很棒的浏览器兼容性测试工具 javascript cookies 代码问题
function fnTest()
{
alert('aaa');
}
document.write(fnTest);//通过这句,证明fnTest是function,而不是变量
var fnObjRef = fnTest;
//fnTest = null;//有没有都一样,可以注释掉
fnObjRef();//由于var fnObjRef = fnTest的赋值,使得fnObjRef产生与fnTest相同结构的函数</script>
{
alert('aaa');
}
document.write(fnTest);//通过这句,证明fnTest是function(一个函数,也可叫做一个方法),而不是变量
var fnObjRef = fnTest;//这句把fnTest函数的赋值给fnObjRef
document.write("<br />");
document.write(fnObjRef);//输出function fnTest() { alert('aaa'); },证明fnObjRef成为了function
fnTest = null;
document.write("<br />");
document.write(fnTest);//此时会输入null,说明这个时候fnTest被null赋值,不过这倒是不影响后面
fnObjRef();//由于var fnObjRef = fnTest的赋值,使得fnObjRef产生与fnTest相同结构的函数
//最后这句,是调用fnObjRef方法,也就是执行最上面的 function fnTest(){alert('aaa');}
//所以会弹出aaa
//以上在IE和火狐测试过
</script>大侠你天资聪颖,想必一定能明白,不明白再问我就可以了
function fnTest()
{
alert('aaa');
}函数保存到一个内存区域: ox25845
fnTest 保存函数的内存地址 ox25845。
var fnObjRef = fnTest; 传地址,fnObjRef 和fnTest 的值都是:ox25845 fnTest = null; // fnTest指向空。但是 fnObjRef 还是用了ox25845。内存区域: ox25845始终还存在。
具体 内存区域: ox25845 什么时候会被浏览器回收。不同浏览器机制不一样。去网上搜索吧
你可以把引用类型看做路标,通过该路标可以找到目的地
var fnObjRef = fnTest;//表示两个路标指向同一个目的地
fnTest = null;//你把其中一个路标fnTest摘掉了,它没了,但另一个路标fnObjRef仍然存在,fnObjRef仍然指向目的地
{
alert('aaa');
}
var fnObjRef = fnTest;//此时的fnObjRef已经成型
fnTest = null; //只是影响fnTest,但是不影响fnObjRef
document.write(fnObjRef+"<br />");
fnObjRef = fnTest;//如果此时再加这句,就会影响
document.write(fnObjRef);
fnObjRef();//此时已经无作用了</script>fnTest也就是函数内存地址的指针如果想让他们都没作用,需要都指向空值