JavaScript基础知识----六道有趣的Js基础题以及解答

时间:2022-02-04 15:47:00

题目:

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.

  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));

另解:

  1. function getArrMax(){
    return Math.max.apply(null,a);
    }

2.

  1. 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.

  1. function Fib(n){
    if(n===1||n===2){return 1;}
    else return Fib(n-1)+Fib(n-2);
    }
    /* console.log(Fib(10)); */

5.

  1. Number.prototype.plus = function(x){
    return this+x;
    }
    Number.prototype.minus = function(x){
    return this-x;
    }
    /* console.log((5).plus(3).minus(6)); */

6.

  1. 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)); //