五道题目
1.比较经典的,类似于
for(let i=0;i<10;i++){
setTimeout(function(){
console.log(i)
},1000)
} 如何输出0 1 2 3...答的let,闭包,第三个参数 问为什么let可以输出这个,答的作用域,面试官让详细解释,我不知道是要怎么样详细解释
2.引用类型考察
let a={m:10,n:30}
let b=a;
let c=b;
b.m=20;
let d={...b}
c={n:40}
console.log(a.m) //20
console.log(a===b) //true
console.log(a===c) //false
console.log(b===d) //false(...运算符第一层深拷贝,如果某项还是引用类型会互相影响)
console.log(b===c) //false 3. 千分位补充逗号,且保留两位小数 let str='1234567'
function convertMoney(str){
let strarr=str.split('.');
let first=strarr[0];
let second=strarr[1] || '00';
let idx=0;
let res=[]
for(let i=first.length-1;i>=0;i--){
idx++;
res.unshift(first[i])
if(idx %3==0){
res.unshift(',')
}
console.log(res)
}
let results=res.join('')+'.'+ second;
return results
}
console.log(convertMoney(str)) 也可以用正则,网上的答案 let str='1234567'
function convertMoney(str){
let reg=/\d{1,3}(?=(\d{3})+$)/g;
let newarr=str.replace(reg,'$&,')
return newarr
}
console.log(convertMoney(str)) 4.按照index排序 采纳评论区大佬答案。。
let arr=[
{value:'北京',index:'beijing'},
{value:'上海',index:'shanghai'},
{value:'北海道',index:'beihaidao'},
{value:'日本',index:'ribeng'}
]
let newarr=arr.sort(function(a,b){
if(a.index > b.index) {
return 1
} else if(a.index < b.index) {
return -1
} else {
return 0
}
}) 平时做正则容易出错,比较怂还是用charCodeAt()了
let str='ahbc345lkiol876kkk67';
let res=[];
let temp=[];
for(let i=0;i<str.length;i++){
if(str[i].charCodeAt()>='0'.charCodeAt() && str[i].charCodeAt()<='9'.charCodeAt() ){
temp.push(str[i])
}else{
res.push(temp)
temp=[]
}
}
res.push(temp)
console.log(res.filter(item=>item!=0)) 可以用正则 let str='ahbc345lkiol876kkk67'; let reg=/\d+/g let newreg=str.match(reg) console.log(newreg)
不太会搞这些,有错的或者有更好的方法欢迎大家指出来我学习一下
****************************
更新
二面,最近面试太忙可能和其它面试记混了,尽量还原
1.手写防抖节流
2.为什么不用es6写,es6转换原理
3.redux的流程
4.为什么redux数据管理框架可以和react这种UI框架结合起来(提示与provider和contexts有关)
5.手写一个简单的闭包
6.闭包概念,使用到闭包的例子说明
7.有没有看过源码
8.react-thunk
9.有没有用过ts
10.简单介绍一下webpack
11.简单说明loaders和plugin的不同
12.https传输的内容需不需要另外加密
没啥后续了,应该是挂了
迷惑,8月27一面,今儿都10月12了,来个三面链接?!!!!!!!
全部评论
(7) 回帖