标签:内部函数 缺点 内存 闭包函数 javascrip 定义 name OLE 返回值
function fn1() {
var name = 'iceman';
function fn2() {
console.log(name);
}
return fn2;
}
var fn3 = fn1();
fn3();
这样就清晰地展示了闭包:
fn2的词法作用域能访问fn1的作用域
将fn2当做一个值返回
fn1执行后,将fn2的引用赋值给fn3
执行fn3,输出了变量name
正常来说,当fn1函数执行完毕之后,其作用域是会被销毁的,然后垃圾回收器会释放那段内存空间。而闭包却很神奇的将fn1的作用域存活了下来,fn2依然持有该作用域的引用,这个引用就是闭包。
return
让内部函数可以被调用。if
需要设置好递归函数的结束条件,不然容易陷入死循环。function f(n) {
if (n <= 1){
// console.log(1111);
return 1;
}else {
// console.log(n * f(n-1));
return n * f(n-1);
}
}
console.log(f(10)); // 3628800
这样就清晰地展示了递归函数的运算:
递归的特点总结:
标签:内部函数 缺点 内存 闭包函数 javascrip 定义 name OLE 返回值
原文地址:https://www.cnblogs.com/zhaohongcheng/p/10846401.html