6. 变量晋升
代铝闼楝第2次计算fibonacci(100)则只须要在内存中直接攫取结不雅。
10. 函数重载
所谓函数重载(method overloading),就是函数名称一样,然则输入输出不一样。或者说,许可某个函数有各类不合输入,根据不合的输入,返回不合的结不雅。凭直觉,函数重载可以经由过程if...else或者switch实现,这就不去管它了。jQuery之父John Resig提出了一个异常巧(bian)妙(tai)的办法,应用了闭包。
可贵在于,people.find只能绑定一个函数,那它为何可以处理3种不合的输入呢?它弗成能同时绑定3个函数find0,find1与find2啊!这里的关键在于old属性。
由addMethod函数的调用次序可知,people.find最终绑定的是find2函数。然而,在绑定find2时,old为find1;同理,绑定find1时,old为find0。3个函数find0,find1与find2就如许经由过程闭包链接起来了。
根据addMethod的逻辑,当f.length与arguments.length不匹配时,就会去调用old,直到匹配为止。
代铝闼楝外部函数f1只履行了一次,变量N设为0,并将内部函数f2赋值给了变量result。因为外部函数f1已经履行完毕,其内部变量N应当在内存中被清除,然而事实并不是如许:我们每次调用result的时刻,发明变量N一向在内存中,并且在累加。为什么呢?这就是闭包的神奇之处了!
参考链接
- 闭包 - MDN
- JavaScript闭包-块级感化域和私有变量
- Javascript持续机制的设计思惟 - 阮一峰
- 变量晋升 - MDN
- JS函数式编程指南
- 浅谈JavaScript函数重载
【编辑推荐】
- 现代前端开起身术栈
- 前端模板的道理与实现
- 前端机能优化以及解决筹划
- 换个思路懂得Javascript中的this
- JavaScript语法树与代码转化实践
推荐阅读
笔者github上有一个简略单纯版的HashTable的实现:HashTable实现 在PHP内毫闼楝个一一个很重要的数据构培养是HashTable。我们常用的数组,在内核中就是用HashTable来实现。那么,PHP的Hash>>>详细阅读
本文标题:10个JavaScript难点
地址:http://www.17bianji.com/lsqh/36438.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示