分享一份JS前端面试题

第一部分:送分题

1、简单叙述一下闭包的概念,闭包用在什么地方。

2、实现一一布局:左列固定,右列自适应。

3、`BFC`(Block Formatting Context)。

4、写出6个以上常用的标签,并注明用法。

5、列举出所有能让一个元素看不到的CSS属性。

6、移动端布局的方式有哪些?

 

第二部分:JS题

1、如下:

var length = 10;
function fn(){
    alert(this.length);
}
var obj={
    length:5,
    method:function(fn){
        fn();        //输出多少?
        arguments[0]();      //输出多少?
    }
}
obj.method(fn);

2、如下:

  [('5'+3),('5'-3)]的值:

  A:['53',2]       B:[8,2]       C:报错  D:其他

3、如下:

  [1<2<3,3<2<1]的值:

  A:[true,true]  B:[true,false]  C:报错  D:其他

4、下面代码会输出什么结果。

function Foo(){
        getName = function () {alert(1);}
        return this;
    }
Foo.getName = function() {alert(2);};
Foo.prototype.getName = function(){alert(3);};
var getName = function(){alert(4);};
function getName(){alert(5)};

Foo.getName();
getName();
Foo().getName();
getName();
new Foo.getName();
new Foo().getName();    
new new Foo().getName();

 

5、如下:

function fun(n,o){
    console.log(o);
    return {
        fun:function(m){
            return fun(m,n)
        }
    }
}    

var a=fun(0);  a.fun(1);  a.fun(2);  a.fun(3);  //undefined,?,?,?
var b=fun(0).fun(1).fun(2).fun(3);         //undefined,?,?,?
var c=fun(0).fun(1); c.fun(2); c.fun(3);     //undefined,?,?,?

请问,三行a,b,c的输出分别是什么?

6、说说对于MVC与MVVM的理解。

 

第三部分:附加题

1、请简单描述undefined、null、NaN和undeclared各自的区别。

2、如何实现下列代码:

[1,2,3,4,5].deplicator();        //返回[1,2,3,4,5,1,2,3,4,5]

 3、如何实现下列代码:

  var o={
    a:{
      b:{
        c:11
      }
    },
    b:2
  };
  Object.prototype.hash=function(attr){
    //TODO:完成该方法;
  }
  o.hash('a.b.c');  //输出11
posted @ 2017-05-26 16:34  不由分说  阅读(228)  评论(0编辑  收藏  举报