js常见面试题

作者: 摄影狗杨木木 | 来源:发表于2017-04-11 21:42 被阅读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

    未完待续。

    相关文章

      网友评论

        本文标题:js常见面试题

        本文链接:https://www.haomeiwen.com/subject/cxnuattx.html