http和https
HTTP 和 HTTPShttp 和 https 的基本概念http: 是一个客户端和服务器端请求和应答的标准(TCP),用于从 WWW 服务器传输超文本到本地浏览器的超文本传输协议。
https:是以安全为目标的 HTTP 通道,即 HTTP 下 加入 SSL 层进行加密。其作用是:建立一个信息安全通道,来确保数据的传输,确保网站的真实性。
http 和 https 的区别及优缺点?
http 是超文本传输协议,信息是明文传输,HTTPS 协议要比 http 协议安全,https 是具有安全性的 ssl 加密传输协议,可防止数据在传输过程中被窃取、改变,确保数据的完整性(当然这种安全性并非绝对的,对于更深入的 Web 安全问题,此处暂且不表)。
http 协议的默认端口为 80,https 的默认端口为 443。
http 的连接很简单,是无状态的。https 握手阶段比较费时,会使页面加载时间延长 50%,增加 10%~20%的耗电。
https 缓存不如 http 高效,会增加数据开销。
Https 协议需要 ca 证书,费用较高,功能越强大的证书费用越高。
SSL 证书需要绑 ...
本命年生日
生日快乐
今天是我人生中第二个本命年生日,这十二年自己经历了许许多多的挫折,受了数不清的委屈,走了不少弯路
但是这十二年我成长了很多,我懂得了如何提升自己学习能力,从一个不爱学习的小家伙成长为了一个爱学习的大家伙,从不自律,作息不规律的赖床虫改变成了一个早起不赖床的早起鸟
我不知道后面这十二年我会成长成什么样子的人,但是我会努力再努力,不会怕苦怕累,学会永久性独立思考,善于思考,懂于分析问题的成熟大叔
这个博客不知道我会维护多久,倘若下一个十二年还在,不知道那时候的我会不会觉得今天我说的话很幼稚呢,哈哈哈
好了,祝自己接下来找工作一切顺利吧,万事胜意
GO/AO/VO
对GO/AO/VO的理解GO
Global Object JS代码在执⾏前会现在堆内存中创建⼀个全局对象(GO)
⽤于存放⼀些定义好的变量⽅法等包含Date Array String Number setTimeout等
同时有⼀个window属性指向⾃⼰
同时在语法分析转成AST的过程中也会将⼀些变量 函数 存放在GO中 只是变量的初始值为 undefifined
AO
函数在执⾏前会先在堆内存中创建⼀个AO(Activation Object)对象 ⾥⾯存放这arguments 对应函数的形参 以及在函数中定义的变量 初始值为undefifined
VO
Variable Object 在执⾏函数时 会在执⾏上下⽂栈(ECS)中进⼊⼀个函数执⾏上下⽂(FEC)其中有三个核⼼ 核⼼之⼀是VO 指向的是该函数在内存中解析时创建的AO ⽽在全局执⾏上下⽂中指向的是GO
函数
函数 篇章apply、call、bind函数的⽤法和区别?⽤法:
apply
第⼀个参数: 绑定this
第⼆个参数: 传⼊额外的实参, 以数组的形式
call
第⼀个参数: 绑定this
参数列表: 后续的参数以多参数的形式传递, 会作为实参
bind(不希望obj对象身上有函数)
12var bar = foo.bind(obj)bar() // this -> obj
区别
call、apply和bind都可以改变函数的this指向
call、apply和bind第⼀个参数的是this要指向的对象
call、apply和bind都可以后续为函数传参,apply是将参数并成⼀个数组,call和bind是将参数依次列出
call、apply都是直接调⽤,bind⽣成的this指向改变函数需要⼿动调⽤。
什么是纯函数?如何编写纯函数?纯函数:纯函数⼀般具有以下的特点:
确定的输⼊⼀定会有确定的输出(外部环境的任何变化不会影响函数内部的操作产⽣的结果)
纯函数的执⾏不会产⽣副作⽤。(函数内部的操作也不会对函数外部产⽣任何影响)
纯函数在react和red ...
数组
数组常⽤的数组操作⽅法有哪些?Array.shift()
删除并返回第⼀个元素作⽤:从数组中删除第⼀个元素(即下标为0的元素),并返回该元素。 注意:1)删除元素之后,数组的⻓度-1。
Array.pop()
删除并返回最后⼀个元素 作⽤:从数组中删除最后⼀个元素(即下标为length-1的元素),并返回该元素。 注意:1)删除元素之后,数组的⻓度-1。
Array.push(param1[,param2,…paramN])
尾部添加元素 作⽤:在数组的尾部添加⼀个元素,并返回新数组的⻓度。 注意:1)它是直接修改该数组,⽽不是重新创建⼀个数组。
Array.unshift(newElement1[,newElement2,…newElementN])
头部添加元素 作⽤:在数组的头部添加⼀个或多个元素,并返回新数组的⻓度。 注意:1)它是直接修改该数组,⽽不是重新创建⼀个数组
Array.join([separator])
转换成字符串 作⽤:把数组的所有元素放⼊到⼀个字符串中。 注意:1)参数separator表示字符串中元素的分隔符,可以为空,默认为半⻆逗号。
Arra ...
闭包
你是如何理解闭包的,闭包到底是什么?
什么是闭包?
⼀个普通的函数function,如果它可以访问外层作⽤域的⾃由变量,那么这个函数和周围环境就是⼀个闭包。
从狭义的⻆度来说:JavaScript中⼀个函数,如果访问了外层作⽤域的变量,那么它是⼀个闭包
应⽤场景
防抖 、节流 、⽴即执⾏函数 、组合函数等等
闭包的概念
函数执行时形成的私有上下文EC(FN),正常情况下,代码执行完会出栈后释放;但是特殊情况下,如果当前私有上下文中的某个东西被上下文以外的事物占用了,则上下文不会出栈释放,从而形成不销毁的上下文。 函数执行函数执行过程中,会形成一个全新的私有上下文,可能会被释放,可能不会被释放,不论释放与否,他的作用是:
保护:划分一个独立的代码执行区域,在这个区域中有自己私有变量存储的空间,保护自己的私有变量不受外界干扰(操作自己的私有变量和外界没有关系
保存:如果当前上下文不被释放【只要上下文中的某个东西被外部占用即可】,则存储的这些私有变量也不会被释放,可以供其下级上下文中调取使用,相当于把一些值保存起来了;
我们把函数执行形成私有上下文,来保护和保存私有变量机制称为 ...