摘要: 递归函数是自己调用自己的函数。 递归函数执行时会形成一个调用记录,当子一层函数代码执行完成之后父一层函数才会销毁调用记录,这就形成了调用栈。栈的叠加可能会产生内存溢出。 n的阶乘 因为尾递归函数每子一层不再需要使用父一层的变量,所以父一层执行完毕就会销毁栈记录,避免了内存溢出节省了内存空间。 阅读全文
posted @ 2018-12-06 14:43 加菲ZYK 阅读(380) 评论(0) 推荐(0)
摘要: 闭包的概念 我的理解是:闭包就是能够从外部读取函数内部变量的函数。函数形式是由外部函数和内部函数组成,内部函数使用着外部函数的变量,把内部函数直接返回给外部。 闭包的写法 直接获取结果 function foo(c){ var num = c; return function A(){ num++; 阅读全文
posted @ 2018-12-05 15:40 加菲ZYK 阅读(94) 评论(0) 推荐(0)
摘要: 1.var变量提升 var是ES5中用于定义变量的保留字。 第3种情况,JS会有一个预编译的过程。实际的过程可以写成下面的代码。这就是var变量的提升。 2. let const 的“暂时性死区(TDZ)” let声明的变量和var声明变量十分相似,但是let不会提升变量,会存在TDZ。 不存在变量 阅读全文
posted @ 2018-12-05 11:27 加菲ZYK 阅读(271) 评论(0) 推荐(0)