javascript面试题

web_haohao

分类: JavaScript、WEB前端、前端相关 2651 1


1.不能使用任何循环控制语句和迭代器的情况下实现一个0到1000的数组赋值。

Object.keys(Array.apply(null,{length:1000}))

这样就获取到一个字符串类型0到1000的数组…

如果获取到一个number类型0到1000的数组呢?

Object.keys(Array.apply(null,{length:1000})).map(item=>+item)

这样写好像没符合题意…如果有好的方式可以在下方留言评论一下…

2.写出以下代码的运行结果

for(var i=0;i<6;i++){
     setTimeOut(function(){
             console.log(i)
     })
}

答案是6个6,很多人说是setTimeOut是异步的,就没有下文了。如果要真正弄清楚,还是要看一下js事件循环机制还有宏任务和微任务。如果把上面代码修改成如下内容,结果又是多少呢?

for(var i=0;i<6;i++){
     var  a=i;
     setTimeOut(function(){
             console.log(a)
     })
}

3.将以下数组按照age从小到大排序。

var arr = [{name:’xiaoxiao’,age:20},
{name:’quanquan’,age:35},{
name:’xiaoming’,age:15 } ]

arr.sort(function(a,b){ a.age-b.age})

4.使用js实现一个repeat方法。

方法1:
function repeat(str,n){
   return (new Array(n)).join(str)
}
方法2:
function repeat(str,n){
    var s = str,total = "" 
    while(n > 0){
        if(n % 2 === 1){
               total+=s
        }
        if(n===1){
             break;
        }
        n = n/2
    }
    return total
}
方法3:
function repeat(str,n){
    return n > 0 ? str + (repeat(str,--n)) : "" 
}

  • 0人 Love
  • 0人 Haha
  • 1人 Wow
  • 0人 Sad
  • 0人 Angry

作者简介:web_haohao

共 1 条评论关于 “javascript面试题”

Loading...