总结了一些常见的js面试题,欢迎大家评论补充。
!!!注意不要一味的死记硬背,掌握原理才是关键。
数组去重
var num = [1,2,3,5,6,1,2,44,58,23,3,5,6]; var n = []; function quchong(arr) { for (var i = 0; i < arr.length; i++) { if (n.indexOf(arr[i])==-1) { n.push(arr[i]) } } } quchong(num);
去掉数组中的空字符
function deleteNullInArray(array){ return array.filter(function(item){ return item!=null; }) } var arr=[1,2,null,,,5]; console.log(deleteNullInArray(arr));
斐波那契数列求第N位
方法一
var n=5; var num1 = 1; var num2 = 1; for(var i = 3; i <= n; i++) { var temp = num2; num2 = num1 + num2; num1 = temp; } console.log(num2);
方法二
function fibona(month) { if(month == 1 || month == 2) { return 1; } else { return fibona(month - 1) + fibona(month - 2); } } alert(fibona(6));
两个变量的值都数字,在不使用第三个变量的情况下交换他们的值
var a=10; var b=20; a=a-b; //a:-10,b:20 b=a+b; //a:-10,b:10 a=b-a; //a:20,b:10
获取数组中最大值和最小值
var arr=[1,2,3]; function arrMax(arr){ return Math.max.apply(Math,arr); } console.log(arrMax(arr)) function arrMin(arr){ return Math.min.apply(Math,arr); } console.log(arrMin(arr))
说有一盒糖总数是Y,一天吃一半又一个,第X天的时候剩1个,写个方法输入X输出Y。
自己写的不知道理解对不对 function tt(x){ var y = 1; for(var i=1;i<x;i++){ y=(y*2)+1; } return y; }
下面代码输出什么?
var name = 'world!'; (function(){ if (typeof name === 'undefined') { var name = 'jack'; console.log('goodbye '+name); }else if(name=='world!'){ console.log('hello ' + name); }else{ console.log('hello goodbye'); } })(); 考作用域,输出goodbye jack
下面代码输出什么?
`
function fun(n,o){
console.log(o);
return {
fun:function(m){
return fun(m,n);
}
}
}
var a=fun(0); //undefined
a.fun(1); //0
a.fun(2); //0
a.fun(3); //0
var b=fun(0).fun(1).fun(2).fun(3); //undefined,0,1,2
var c=fun(0).fun(1); //undefined,0
c.fun(2); //1
c.fun(3); //1
`
下面代码输出什么?
var z = 10; function foo(){ console.log(z); } (function(funArg){ var z = 20; funArg(); })(foo); //10
下面代码输出什么?
`
var data = [];
for(var k = 0; k < 3; k++){
data[k] = function(){
console.log(k);
};
}
data0; //3
data1; //3
data2; //3
`
下面代码输出什么?
`
var myObject = {
foo: "bar",
func: function(){
var self = this;
console.log('outer func : this.foo1' + this.foo); //bar
console.log('outer func : self.foo2' + self.foo); //bar
(function(){
console.log('inner func : this.foo1' + this.foo); //undefined
console.log('inner func : self.foo2' + self.foo); //bar
})();
}
};
myObject.func(); //还是作用域
`
下面代码输出什么?
`
var foo = 1;
(function(){
console.log(foo); //undefined
var foo=2;
console.log(foo); //2
})();
`
下面代码输出什么?
var obj={ name: "a", getName:function(){ return this.name; } }; console.log(obj.getName()); //a var getName=obj.getName; console.log(getName()); //空
下面代码输出什么?
function Foo(){ bar=function(){console.log(1)}; return this; } Foo.bar=function(){console.log(2)}; Foo.prototype.bar=function(){console.log(3)}; var bar=function(){console.log(4)}; function bar(){console.log(5)}; Foo.bar(); //2 bar(); //4 Foo().bar(); //1 bar(); //1 new Foo.bar(); //2 new Foo().bar(); //3 new new Foo().bar(); //3
未完待续。