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

题目:

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


你可能感兴趣的:(JavaScript基础知识----六道有趣的Js基础题以及解答)