美文网首页
前端近期小结

前端近期小结

作者: 来了啊小老弟 | 来源:发表于2021-02-01 23:09 被阅读0次

1.有一种很方便的深克隆方式,不需要写方法去递归。

let a = {
  a1:[1,2,3],
  a2:'string',
  a3:{
    name:'jack',
    age:22
  }
}

let b=JSON.parse(JSON.stringify(a)) //深克隆
let c = {...a} //浅克隆

先转换成字符串重新开辟新的栈空间,然后再转换成对象即可,但是这种方式不可以转换内部有方法,日期,正则表达式的对象。

2.形参和实参的区别

var a = 1;

function func(b) {  // 这里是函数定义,`b`就是形参
    alert(b);
}

func(a);  // 这里是函数调用`a`就是实参

实参(argument):
全称为"实际参数"是在调用时传递给函数的参数. 实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。

形参(parameter):
全称为"形式参数" 由于它不是实际存在变量,所以又称虚拟变量。是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数.在调用函数时,实参将赋值给形参。因而,必须注意实参的个数,类型应与形参一一对应,并且实参必须要有确定的值。

3.一道面试题

考点1:浏览器页面加载时会生成执行栈,每一个函数执行时会把它的执行上下文压缩到栈内存里,函数都是引用内存,都放在堆里,每个堆都有一个16进制的地址。对象堆里存的是键值对,函数堆里存的是函数的字符串。
考点2:a++,先运算再自加,++a:先自加再运算。

let a =1,b=2;
console.log(a++) //1
console.log(a+b++) //4
console.log(a+(++b)) //6
微信截图_20210201224847.png

事件队列面试题

微信截图_20210202211216.png
详见阮一峰老师的http://www.ruanyifeng.com/blog/2015/05/async.html
async返回一个promise,等待await里面的函数执行完毕后,再执行await后面的函数。如果await里面是异步函数也会等待其执行完毕,跳出async执行别的微任务,然后再回来执行await后面的函数。如果await里面是普通同步函数,则会立即执行。
console.log('script start')

async function async1() {
    await async2()
    console.log('async1 end')
}
async function async2() {
    console.log('async2 end')
    return Promise.resolve().then(()=>{
        console.log('async2 end1')
    })
}
async1()

setTimeout(function() {
    console.log('setTimeout')
}, 0)

new Promise(resolve => {
    console.log('Promise')
    resolve()
})
.then(function() {
    console.log('promise1')
})
.then(function() {
    console.log('promise2')
})
//script start => async2 end => Promise => script end => async2 end1 => promise1 => promise2 => async1 end => setTimeout

此时执行完awit并不先把await后面的代码注册到微任务队列中去,而是执行完await之后,直接跳出async1函数,执行其他代码。然后遇到promise的时候,把promise.then注册为微任务。其他代码执行完毕后,需要回到async1函数去执行剩下的代码,然后把await后面的代码注册到微任务队列当中,注意此时微任务队列中是有之前注册的微任务的。所以这种情况会先执行async1函数之外的微任务(promise1,promise2),然后才执行async1内注册的微任务(async1 end). 可以理解为,这种情况下,await 后面的代码会在本轮循环的最后被执行.

浏览器输入网址发生了什么:

https://mp.weixin.qq.com/s?__biz=MzI0MzIyMDM5Ng%3D%3D&chksm=f175eea7c60267b1b5b91e527dcdf81027f2f36c97cb1837b13ffbb5a1699e013a77f84d1d16&idx=1&mid=2649826404&scene=21&sn=e4ccac5fe9d96b26ca1d8d347276d2b1#wechat_redirect

微信截图_20210208162612.png
微信截图_20210208162627.png

有关浏览器相关知识,强缓存,协商缓存等等,必看

301,302,303重定向,304和重定向无关
https://mp.weixin.qq.com/s?__biz=MzI0MzIyMDM5Ng==&mid=2649825731&idx=1&sn=2c0835cebfee3a44e82d9efeb54f6e43&chksm=f175eb00c602621649fd46d7c9de87f7f08a4cdaa9e08808b938948584ca6977e24a5f5336ce&scene=21#wechat_redirect

相关文章

  • 前端近期小结

    1.有一种很方便的深克隆方式,不需要写方法去递归。 先转换成字符串重新开辟新的栈空间,然后再转换成对象即可,但是这...

  • 【整理】前端国际化小结

    近期在做国际化的改造,做了相应的调研,简单做下项目前端国际化的小结 国际化可以分为前端国际化和后端国际化,也可以是...

  • 近期小结

    我是一个非常懒惰的人,经常不想动,但是无意中发现了简书,又机缘巧合下加了个群,天天看着群友们练习,慢慢也对自己有了...

  • 近期小结

    最近朋友圈里一位好友发了这样的一段话,恰巧也和我这段时间的反思相合,引用如下: 遭遇背叛,才会懂得忠诚的可贵。 被...

  • 近期小结

    闺蜜说我这一个月分为三个状态,十天躁郁颓十天明媚平静十天自我反思。 这一波的躁郁程度有点高,顶点完全是小炸...

  • 近期小结

    好久没写小结了,最近过得异常普通,没有什么情绪,每天基本都是一样的。也要努力学习了,下周四级考试,下下周数学考试太...

  • 近期小结

    一晃发现已经有很长时间没有在简书上写过文章啦,捂脸。 下半年换了份工作,新的方向,学习与适应,最大的收获是弄清了自...

  • 近期 小结

    写了这么久的小文章,里里外外把自己剖析了个遍,把读到的有限的文章心得体会分享过后,进入焦虑区的地带。 自己陷入到一...

  • 近期小结

    离端午小长假还有几个小时, 办公室早已洋溢着一份假期前的喜悦与激动,虽然只比平时休息日多了一天, 但感觉还是...

  • 近期小结

    以往文章都是在公众号写的,现在发现实习之后自己的自由时间比较少,也许这是借口吧,时间管理能力还需要提高。 这段时间...

网友评论

      本文标题:前端近期小结

      本文链接:https://www.haomeiwen.com/subject/patetltx.html