常见面试题

1) for循环setTimeout500ms打印出1-5

考察闭包结合异步

  • 第一种方式用let
for(let i=0; i< 6; i++){
    setTimeout(function(){console.log(i)},500)
 }
  • 第二种用闭包
for(var i=0; i< 6; i++){
    var a = function(){
        var j = i;
        setTimeout(function(){console.log(j)},500)
    }
    a()
}

for (var i = 1; i< 6; i ++) {
  (function(i) {
    setTimeout(function () {
      console.log(i)
    }, 500 )
  })(i)
}
  • 第三种promise
for(var i=1;i<6;i++){
    new Promise((resolve,reject)=>{
        setTimeout(resolve,500,i);
    }).then(i=>console.log(i))
}

2) vue和Jq的区别

  • vue: 数据驱动渲染页面,不需要操作具体的dom,页面与js耦合性弱,易于维护
  • jQuery首先要获取到dom对象,然后对dom对象进行进行值的修改等操作

3) 数据类型有哪些

共七种数据类型:
5种为基本类型null,string,boolean,undefined,number
Object 为引用类型,
Symbol是新出来的特殊数据类型,可以传入值或者对象且唯一!

4) 是否了解解构赋值

使用数组或者对象的形式对给定的变量进行赋值

let [a,b,c] = [1,2,3];//右边的给左边
let {a,b,c}={a: 12, b: 5, c: 8};

5) require和import有什么不同

  • import用于引入外部模块。
  • require不仅可以引用文件和模块,而且使用位置不受限制,可以在代码中使用

6) apply和call可以做什么?有什么区别

改变this指向。两者作用基本一致,区别在于接收参数的方式不一样

  • apply:最多只能有两个参数——新this对象和一个数组argArray
  • call:它可以接受多个参数,第一个参数与apply一样,后面则是一串参数列表。

7) html5和css3有哪些新增特性

  • html5:音频,视频,canvas,svg,等多的语义化标签等
  • css3:圆角,动画,滤镜,transform等

8)JS简单的模拟bind

Function.prototype.testBind =  function (context) {
    var self = this;
    return function () {
        return self.apply(context);
    }

}

----------------------------------------------------------------------------
Function.prototype.testBind= function(that){
    var _this = this,
        /*
        *由于参数的不确定性,统一用arguments来处理,这里的arguments只是一个类数组对象,有length属性
        *可以用数组的slice方法转化成标准格式数组,除了作用域对象that以外,
        *后面的所有参数都需要作为数组参数传递
        *Array.prototype.slice.apply(arguments,[1])/Array.prototype.slice.call(arguments,1)
        */
        slice = Array.prototype.slice,
        args = slice.apply(arguments,[1]);
    //返回函数    
    return function(){
        //apply绑定作用域,进行参数传递
        return _this.apply(that,args)
    }    
}

9)描述下cookie,sessionStorage,localSotrage的差异..

  • cookie : 大小4KB 左右,跟随请求(请求头),会占用带宽资源,但是若是用来判断用户是否在线这些挺方便
  • sessionStorage和localStorage大同小异,大小看浏览器支持,一般为5MB,数据只保留在本地,不参与服务端交互.
    • sessionStorage的生存周期只限于会话中,关闭了储存的数据就没了.
    • localStorage则保留在本地,没有人为清除会一直保留
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容