六道JavaScript测验题

时间:2021-05-05 19:22:09

1、找出数字数组中最大的元素(使用Match.max函数)

 var a=[123,23432,345,3,34];
console.log(Math.max.apply(null,a));

2、转化一个数字数组为function数组(每个function都弹出相应的数字)

 var a=[123,23432,345,3,34];
a=a.map(function(value){
return function(){
alert(value);
};
});
console.log(a[3]());

3、给object数组进行排序(排序条件是每个元素对象的属性个数)

var arr=[
{a:1,b:2,c:3},
{a:1,b:2,c:3,d:4,e:5},
{a:1,b:2},
{a:1,b:2,c:3,d:4}
];
Object.prototype.propLength=(
Object.prototype.hasOwnProperty('_count_')?
function (){
return this._count_; //FF
}
:
function(){
var p,count=0;
for(p in this){
if(this.hasOwnProperty(p)){
count++;
}
}
return count;
}
);
function compare(obj1,obj2){
return obj1.propLength()-obj2.propLength();
}
console.log(arr.sort(compare));

4、利用JavaScript打印出Fibonacci数(不使用全局变量)

 function fibo(n){
var self=arguments.callee;
return n < 2 ? n : self(n-1)+self(n-2);
}
console.log(fibo(6));

5、实现如下语法的功能:var a = (5).plus(3).minus(6); //2

 Number.prototype.plus=function (a){
return this.valueOf()+a;
};
Number.prototype.minus=function (a){
return this.valueOf()-a;
};
var a = (5).plus(3).minus(6);
console.log(a);

6、实现如下语法的功能:var a = add(2)(3)(4); //9

     function add(x){
var sum=x;
var fn=function(y){
sum+=y;
return fn;
};
fn.valueOf=fn.toString=function(){return sum;};
return fn;
}
add(2)(4);
console.log(add(2));
console.log(add(3)(8)(9));
console.log(add(3)(8)(9)(10));

欢迎批评指正。