1.找出数字数组中最大的元素(使用Match.max函数)
Math.max.apply(null, [1,2,3]);
2.转化一个数字数组为function数组(每个function都弹出相应的数字)
function transition(numArray) { var num; for (var i = 0, len = numArray.length; i < len; ++i) { num = numArray[i]; numArray[i] = (function (j) { return function() {alert(j);} }(num)); } }
3.给object数组进行排序(排序条件是每个元素对象的属性个数)
4. 实现如下语法的功能:var a = (5).plus(3).minus(6); //2
Number.prototype.plus=function(a){ return this+a; } Number.prototype.minus=function(a){ return this-a; } var a = 5; b=a.plus(3).minus(6); console.log(b);
5. 实现如下语法的功能:var a = add(2)(3)(4); //9
function add(a) { return function(b) { a += b; return function(c) { return a +=c; } } }
6.利用JavaScript打印出Fibonacci数(不使用全局变量)
ps:Fibonacci数 1 1 2 3 5 8
代码一:
function fib(num){ if(num==1 || num==2){ return 1; } return arguments.callee(num-1) + arguments.callee(num-2); }
代码二:
var fib = (function() { var array = []; return function(n) { if (array[n]) return array[n]; if (n < 1) { array[n] = 0; } else if (n == 1 || n == 2) { array[n] = 1; } else { array[n] = fib(n-1) + fib(n-2); } return array[n]; } })();
代码三:
var fib = function(n) { if (fib[n]) return fib[n]; if (n < 1) { return 0; } else if (n == 1 || n == 2) { fib[n] = 1; } else { fib[n] = fib(n-1) + fib(n-2); } return fib[n]; };
代码二,代码三性能较高,内部缓存了一个斐波那契数列的数组,如果之前计算过某个数,就直接返回,不用重新计算了