为啥根据上图,得到了不同的答案,即使将fun设置为null,依然可以调用呢?
这个函数名是f ,递归调用的也是f(num-1), 不是fun。当然能调用了。
而且作为函数表达式的函数名相当于函数内的局部变量,只能在函数作用域内访问,这就是用来方便进行函数递归调用的。
gun指向fun,然后就算你把fun置为null,gun依然可以运行,js是逐条运行,而不是先编译再执行,之所以能执行,gun应该是指向函数f,然后再把fun置为空。所以依然可以运行。
首先你可以看一下JS函数申明相关的知识,然后再看一下对象深拷贝,浅拷贝相关的知识。自己应该就能理解了。