题目:
1.找出数字数组中最大的元素(使用Math.max函数)
2.转化一个数字数组为function数组(每个function都弹出相应的数字)
3.给object数组进行排序(排序条件是每个元素对象的属性个数)
4.利用JavaScript打印出Fibonacci数(不使用全局变量)
5.实现如下语法的功能:var a = (5).plus(3).minus(6); //2
6.实现如下语法的功能:var a = add(2)(3)(4); //9
解答:
1.
var a = [10,1,2,3,4,8,9];
function max(a){ var len = a.length-1; var maxnum=a[len]; while (len--) { maxnum=Math.max(maxnum,a[len]) } return maxnum; } alert(max(a));
另解:
function getArrMax(){ return Math.max.apply(null,a); }
2.
var getNumFun = []; function toFun(a){ var len = a.length; while (len--) { (function(i){ getNumFun[i] = function(){ alert(a[i]); } })(len); } } toFun(a); getNumFun[5]();
3.
var objarr = [{a:2,b:1}, {d:5},{a:1,b:2,c:3} ]; function rule(o1,o2){ var sizeObj = function(obj){ var size=0; for(var i in obj) size++; return size; } return sizeObj(o1) - sizeObj(o2); } /* objarr.sort(rule); console.log(objarr[0]); */
4.
function Fib(n){ if(n===1||n===2){return 1;} else return Fib(n-1)+Fib(n-2); } /* console.log(Fib(10)); */
5.
Number.prototype.plus = function(x){ return this+x; } Number.prototype.minus = function(x){ return this-x; } /* console.log((5).plus(3).minus(6)); */
6.
function add(num){ var self = arguments.callee; /* alert(self);//undefined,5,13 ~~的作用*/ num += ~~self; self.num = num; return self; } //valueOf是给运行和控制台用,toString是给alert用 add.valueOf = add.toString = function(){return add.num}; alert(add(5)(8)(6)); //19
注:
~~其实是一种利用符号进行的类型转换,转换成数字类型 ~~true == 1 ~~false == 0 ~~"" == 0 ~~[] == 0 ~~undefined ==0 ~~!undefined == 1 ~~null == 0 ~~!null == 1