//就这些了呜呜呜
最后一题是个什么,答得也不好。
Function.prototype.mybind = function(context){
if(typeof this !== 'function'){throw new TypeError('Error')
}
let _this = this
let arg = [...arguments].slice(1)
return function f(){
if(this instanceof f){
return new _this(...arg,...arguments)
}
else{
return _this.apply(context,arg.concat(...arguments))
}
}
const id = '120106198810200518'
function getAge(id) {
var length = id.length;
if(!id){
return 0
}
else{
if(length != 18){
return 0
}
var year = '',month='',day=''
if(length == 18){
year = id.substr(6,4)
month = id.substr(10,2)
day = id.substr(12,2)
var date = Date.now()
var curYear = date.getFullYear()
var curMonth = date.getMonth()+1
var curDay = date.getDay()
var age = Number(curYear)-Number(year)
if(curMonth<month || (curMonth == month && day <curDay){
age --
}
return age
}
}
// 返回年龄
}
//评测题目: 3-日志上报
/*
现在有一个基于 http 的前端日志采集系统,为了优化性能,我们需要把较密集的单次上报日志的行为,
改成合并掉 100ms 时间窗口内的单次上报为批量上报。
假设现有的单次上报的函数如下,请改写此函数的实现,不能使用任何库:
const uploadLog = (logStr) => {
fetch('https://log.xxx.com', {
method: 'POST',
body: JSON.stringify([logStr])
});
}
注意:
1.没有日志上报调用时,不发生 http 请求。
2.无论日志上报调用有多频繁,http 请求间隔"不小于" 100ms
*/
var str = '1';
function delay(delay){
let pre = Date.now()
let arr=[]
return function(str){
let now = Date.now() // 10
arr=[str,...arr]
if(now - pre >= delay){
upload(arr)
pre = now) // 12
arr =[]
}
}
}
// delay(string,delay)
// delay(string1,delay)
let fn = delay(100)
setInterval(()=>{
str += '231'
fn(str)
} , 10)
全部评论
(1) 回帖