js面试题及答案(一)不喜,可放肆喷
1.找出数字数组中最大的元素(使用Match.max函数)
Math.max.apply(null, [1,2,3]);
2.转化一个数字数组为function数组(每个function都弹出相应的数字)
function transition(numArray) {
var num;
for (var i = 0, len = numArray.length; i < len; ++i) {
num = numArray[i];
numArray[i] = (function (j) {
return function() {alert(j);}
}(num));
}
}
3.给object数组进行排序(排序条件是每个元素对象的属性个数)
4. 实现如下语法的功能:var a = (5).plus(3).minus(6); //2
Number.prototype.plus=function(a){
return this+a;
}
Number.prototype.minus=function(a){
return this-a;
}
var a = 5;
b=a.plus(3).minus(6);
console.log(b);
5. 实现如下语法的功能:var a = add(2)(3)(4); //9
function add(a) {
return function(b) {
a += b;
return function(c) {
return a +=c;
}
}
}
6.利用JavaScript打印出Fibonacci数(不使用全局变量)
ps:Fibonacci数 1 1 2 3 5 8
代码一:
function fib(num){
if(num==1 || num==2){
return 1;
}
return arguments.callee(num-1) + arguments.callee(num-2);
}
代码二:
var fib = (function() {
var array = [];
return function(n) {
if (array[n]) return array[n];
if (n < 1) {
array[n] = 0;
} else if (n == 1 || n == 2) {
array[n] = 1;
} else {
array[n] = fib(n-1) + fib(n-2);
}
return array[n];
}
})();
代码三:
var fib = function(n) {
if (fib[n]) return fib[n];
if (n < 1) {
return 0;
} else if (n == 1 || n == 2) {
fib[n] = 1;
} else {
fib[n] = fib(n-1) + fib(n-2);
}
return fib[n];
};
代码二,代码三性能较高,内部缓存了一个斐波那契数列的数组,如果之前计算过某个数,就直接返回,不用重新计算了
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。