web前端Web前端之路让前端飞

js常见面试题

2017-04-11  本文已影响358人  摄影狗杨木木

总结了一些常见的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

未完待续。

上一篇下一篇

猜你喜欢

热点阅读