今天的 JavaScript React Dev 面试题
我刚才在采访中问过这些问题
const spaceShip = {
name: 'Chandrayan',
get1: () => {
console.log(this.name);
},
get2: function (){
console.log(this.name);
}
}
spaceShip.get1()
spaceShip.get2()
现在我知道 spaceShip.get1() 不会打印出任何东西,但如果我希望它以与 get2() 完全相同的方式工作,我该如何绑定它?
我尝试this
先进行类似 get1.bind(spaceShip.this) 或 get1.bind(spaceShip) 的绑定,然后执行,但我不确定会发生什么。
- 然后在第二个问题中
const person = this.state.person;
const person = {...this.state.person};
如果我们改变 person.name 的值,我知道在第二种情况下,值会改变,因为 person 是一个全新的对象
但在第一种情况下它也会改变 this.state.person 中的值吗?
- 有人问我如何编写轮询函数,我不知道,但我仍然尝试说
function myPoll(fn, timeInterval, endTime){
var checkCondition = function(resolve, reject) {
var result = fn();
if(result) {
resolve(result);
}
else if (// for the time checking) {
setTimeout(checkCondition, interval, resolve, reject);
}
else {
reject(error);
}
};
}
但后来他却把它掉了。
- 第四个问题是为 Promise.all 编写 polyfill
Promise.all([pr1, pr2, pr3]).then().catch();
var resolvedPromises = [];
[pr1, pr2, pr3].map((item, resolve, reject) => {
var result = item();
if(result){
resolvedPromises.push(resolve(result));
}
else {
return reject(result);
}
})
所以我试着解释我将把承诺存储在结果中,然后将其推入数组,并且在所有迭代结束时,所有承诺的解析值都将存储在该数组中。
但后来他又问,如果承诺没有得到解决或拒绝,那该怎么办呢?所以我这样修改了代码
var resolvedPromises = [];
[pr1, pr2, pr3].map((item, resolve, reject) => {
item().then((result) => {
if(result){
resolvedPromises.push(resolve(result));
}
}); //pr1;
else {
return reject(result);
}
})
然后他也不知道该问什么,但面试就这样结束了,我甚至都没给他们提问的机会。看来今天我不应该指望赢了。
鏂囩珷鏉ユ簮锛�https://dev.to/oathkeeper/today-s-interview-question-4hm3