一道面试题。接受参数n=5,不用for循环输出数组【1,2,3,4,5】
这用递归的思路,配合arguments.callee,代码如下
1 function show(n) { 2 var arr = []; 3 return (function () { 4 arr.unshift(n); 5 n--; 6 if (n != 0) { 7 arguments.callee(); 8 } 9 return arr; 10 })() 11 } 12 show(5)//[1,2,3,4,5]
现在arguments.callee 被弃用了。怎么办,其实很简单,给内部函数一个名字即可
1 function show(n) { 2 var arr = []; 3 return (function fn() { 4 arr.unshift(n); 5 n--; 6 if (n != 0) { 7 fn(); 8 } 9 return arr; 10 11 })() 12 } 13 show(5)//[1,2,3,4,5]