前端回笼重造🌌---题目收集(不断更新)

164 阅读2分钟

引言:在最近笔试过程中,有碰到一些自己感觉需要注意的知识点,以此作为记录和复盘。

问题一:JavaScript函数定义语法var fn = function() {} 和 function fn() {}的区别。

我们平时会遇到两种函数定义方式

第一种是函数声明:

funName()//正常执行
function funName(){
    //code
}

第二种是函数表达式:

funName()//报错
var funName=function(){
    //code
}

重点:解析器在向执行环境加载数据时,对这两种是有区别的,解析器会率先读取函数声明,以确保在执行任何代码之前可以访问,而函数表达式,则必须等到解析器执行到他所在的代码才会被真正执行。

做道题理解一下

image.png

问题二:一道async/await打印输出题

可能带着promise套路,没有get到await的坑,这里它会阻塞后面的代码,先去执行async外面的同步代码。 解析可以参考:www.cnblogs.com/fundebug/p/…

async function async1() {
    console.log("async1 start");
    await async2();
    console.log("async1 end");
}

async function async2() {
    console.log("async2");
}

console.log("script start");

setTimeout(function() {
    console.log("setTimeout");
}, 0);

async1();

new Promise(function(resolve) {
    console.log("promise1");
    resolve();
}).then(function() {
    console.log("promise2");
});

console.log("script end");

输出:

script start
async1 start
async2
promise1
script end
promise2
async1 end
setTimeout

其他杂七杂八

  • 升序:return a - b && 降序:return b - a
  • HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
  • HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

更新2022/03/18

问题三 布尔输出题

var x = new Boolean(false);
console.log(typeof x);

if(x){
alert('hi');
}

var y = Boolean(0);
if(y){
alert('hello');
}

第一个会弹出,第二个不会弹出,因为第一个是对象。

Generator

Generator是ES6提供的一种异步编程的解决方案。
形式上有两个特征。一是,function关键字和函数名之间有个星号;二是,函数内部使用yield语句,定义不同的内部状态。

function * gen() {
    yield 1;
    yield 2;
    yield 3;
}

下面选项描述正确的是哪个?

  • gen()执行后返回2
  • gen()执行后返回undefined
  • gen()执行后返回一个Generator对象
  • gen()执行后返回1

选第三个