Javascript中匿名函数和传统函数的内存使用情况有什么不同吗?如果是,怎么做?
Javascript中的匿名函数和普通函数之间是否存在内存使用差异 如果是,怎么做?你能解释一下吗?如果“普通函数”是指脚本根级别声明为Javascript中匿名函数和传统函数的内存使用情况有什么不同吗?如果是,怎么做?,javascript,closures,anonymous-function,Javascript,Closures,Anonymous Function,Javascript中的匿名函数和普通函数之间是否存在内存使用差异 如果是,怎么做?你能解释一下吗?如果“普通函数”是指脚本根级别声明为函数a(){的函数,即附加到窗口对象的函数,那么是的,有区别: 附加到窗口对象的函数不会被丢弃,而一旦不再使用匿名函数,它们就会被丢弃 它们可能会降低对窗口对象其他变量的访问速度(在根级别附加函数有时是有条件的,但避免它的原因主要是为了有更干净的代码和避免名称冲突) 匿名函数是:它们保留一个指向其封闭作用域的指针,从而允许使用在此作用域中定义的变量。一个副作用
函数a(){
的函数,即附加到窗口对象的函数,那么是的,有区别:
- 附加到窗口对象的函数不会被丢弃,而一旦不再使用匿名函数,它们就会被丢弃
- 它们可能会降低对窗口对象其他变量的访问速度(在根级别附加函数有时是有条件的,但避免它的原因主要是为了有更干净的代码和避免名称冲突)
- 匿名函数是:它们保留一个指向其封闭作用域的指针,从而允许使用在此作用域中定义的变量。一个副作用是,此作用域不能在函数之前被丢弃,因此函数可能比您想象的要重,比“普通函数”要重(如果不需要匿名声明的变量,您可以添加一个空的作用域来封装匿名声明,并防止出现这种效果,但我不知道javascript引擎是否能够优化掉封闭作用域的一部分,我建议您在不检测循环引用的情况下不要这样做)
谷歌有。如果你指的是匿名函数与命名函数,那么我认为推荐一个函数与推荐另一个函数在性能上没有什么区别。你可以尝试做一个简单的jsPerf测试,不要试图使你的答案无效,但是引用你的语句会更好:)(spec/test)我添加了一个。如果它们出现在我的记忆中,我会添加其他的。在第一点中,我理解,匿名函数可以在我们不使用它们时被丢弃。但在第三点中,你是说匿名函数不能在它们之前被丢弃……你能更详细地解释一下吗?我详细了一点,试图更清楚。但我建议你遵循li我在最后给出的nks是为了对这个话题有一个完美的看法。