函数赋值给变量的疑问

小宏 2017-12-21 05:37:12

function test() {
alert("你好!");
}
var f = test;
test = null;
f();

弱弱的问下,函数是引用类型,赋值给变量,变量存的是引用的地址。如果test=null值做了覆盖,我理解f()的时候不能成功的!
请各位老大指正!
...全文
426 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
漠子凉 2017-12-22
  • 打赏
  • 举报
回复
引用类型只跟定义函数时传参有关系 function(arg){ 如果arg是引用类型 则在函数里面修改是有作用的 }
当作看不见 2017-12-21
  • 打赏
  • 举报
回复

 function test() {       
            alert("你好!");
        }
        var f = test;     
        test = null;
        f();
//上述的代码换成这样就清晰很多了 .. 
test  = function (){    //test -> function
  alert("你好!"); 
}
//变量可以理解为容器
 var f = test;      //f ->function  test ->function  f 和test 存放同一个函数
        test = null;  //f->function test ->null   现在 test里面什么都没放,但是function 还是被f 引用,不会被销毁
        f();   
天际的海浪 2017-12-21
  • 打赏
  • 举报
回复
js中函数名就是存放函数引用地址的变量, f = test是让f变量中也存放和test变量中一样的函数引用地址。 f 和 test 没有任何关联,只是两个变量中存放的函数引用地址一样而已。 改变其中一个变量的值不会影响另一个变量。
一念_天涯 2017-12-21
  • 打赏
  • 举报
回复
举个栗子 从前,你造了个房子,安了个门,然后配了把钥匙。 有一天,你突发奇想,拿着钥匙又配了一把新钥匙,然后还不算完,你又把原来的钥匙给销毁了, 那么问题来了,你用这把新钥匙能不能开原来门

87,990

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧