题目:
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
解答:
var a = [10,1,2,3,4,8,9];
1 function max(a){ 2 var len = a.length-1; 3 var maxnum=a[len]; 4 while (len--) { 5 maxnum=Math.max(maxnum,a[len]) 6 } 7 return maxnum; 8 } 9 alert(max(a));
另解:
1 function getArrMax(){ 2 return Math.max.apply(null,a); 3 }
2.
1 var getNumFun = []; 2 function toFun(a){ 3 var len = a.length; 4 while (len--) { 5 (function(i){ 6 getNumFun[i] = function(){ 7 alert(a[i]); 8 } 9 })(len); 10 } 11 } 12 toFun(a); 13 getNumFun[5]();
3.
1var objarr = [{a:2,b:1}, {d:5},{a:1,b:2,c:3} ]; 2function rule(o1,o2){ 3 var sizeObj = function(obj){ 4 var size=0; 5 for(var i in obj) size++; 6 return size; 7 } 8 return sizeObj(o1) - sizeObj(o2); 9} 10/* objarr.sort(rule); 11 console.log(objarr[0]); */
4.
1 function Fib(n){ 2 if(n===1||n===2){return 1;} 3 else return Fib(n-1)+Fib(n-2); 4 } 5 /* console.log(Fib(10)); */
5.
1 Number.prototype.plus = function(x){ 2 return this+x; 3 } 4 Number.prototype.minus = function(x){ 5 return this-x; 6 } 7 /* console.log((5).plus(3).minus(6)); */
6.
1 function add(num){ 2 var self = arguments.callee; 3 /* alert(self);//undefined,5,13 ~~的作用*/ 4 num += ~~self; 5 self.num = num; 6 return self; 7 } 8 //valueOf是给运行和控制台用,toString是给alert用 9 add.valueOf = add.toString = function(){return add.num}; 10 alert(add(5)(8)(6)); //19
注:
1~~其实是一种利用符号进行的类型转换,转换成数字类型 2~~true == 1 3~~false == 0 4~~"" == 0 5~~[] == 0 6 7~~undefined ==0 8~~!undefined == 1 9~~null == 0 10~~!null == 1