//评测题目: 无
题目1
如图可见区域container的总宽度为100%,内部有三个 div,column1宽度是400px,column2和 column3宽度相同。请补充CSS3来实现基于以下dom结构的布局。
已知的Dom结构:
.column {
display: inline-block;
line-height: 40px;
background: #fff;
margin: 5px;
}
.column-left {
width: 400px;
height: 100%;
}
.column-right {
height: 100%;
flex-grow: 1;
}
题目2
简单实现一个事件订阅机制,具有监听on和触发emit方法。
要求:
const event = new EventEmitter();
event.on(‘some_event’, (…args) => {
console.log(‘some_event triggered’, …args);
});
emitter.emit(‘someEvent’, ‘arg1’, ‘arg2’);
class EventEmitter {
constructor() {
this.handlers = {}
};
on(eventName, handler) {
if (!(eventName in this.handlers)) {
this.handlers[eventName] = [];
}
this.handlers[eventName].push(handler);
};
emit(eventName) {
let arr = […arguments];
arr.shift();
for (let i = 0; i < this.handlers[eventName].length; i++) {
this.handlers[eventName]i;
}
}
}
题目3
有一个对象X,内容如下,请写程序找出所有d的值:
const X = {
y: {
c: {
d: 1
}
},
z: {
e: {
d: 2
}
},
q: {
f: {
d: 3
}
},
o: {
m: {
g: {
h: {
d: 4
}
}
}
}
}
没答完,稍等
题目4:
用 Promise 实现一个函数,每 5s 判断一个随机数是否大于 3,
大于则打印一句日志 continue,小于则结束流程,若随机数一直大于 3,
程序在 60s 后也结束,并打印 done
function fn( content ) {
return new Promise(function( reslove,reject ) {
if(content>3){
resolve(true)
}else{
reject(false)
}
})
}
var number=Math.random();
var timer = setInterval(
fn(number).then(( data )=>{
console.log(‘continue’)
},( err )=>{
clearInterval(timer);
console.log(‘done’)
}), 5000);
setTimeout(function(){
clearInterval(timer);
console.log(‘done’)
}, 60000)