javascript面试题
分类: 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)) : ""
}
共 1 条评论关于 “javascript面试题”