小情绪 2022-05-04 13:48:43
感觉用这个例子来引入惰性函数不是很适合
我们现在需要写一个 foo 函数,这个函数返回首次调用时的 Date 对象,注意是首次。
这个需求应该是用 once 函数实现比较好,不过 addEvent 的例子是适合惰性函数的。
function once(fn) { var fire, ret return function() { var self = this if (!fire) { fire = true ret = fn.apply(self, arguments) } return ret } }
小情绪 2022-05-04 13:48:38
想问一下if([]){console.log("kkk")}里面又是什么转换过程呢?如果是要按false == [] 的话,后面的打印就不会执行,但是实际上后面的语句块的内容会执行
if 的转换规则和 == 不一样,if(xxx) 你可以看成 Boolean(xxx)
- 共 1 页
- 1
HTTP/1.1是纯文本协议,将明文载荷和请求头传递给TCP。但对于TCP来说,上层传递的数据是不透明的字节流,无法区分是何种资源(不管上层传递的是js,css还是html,对于TCP来说都是一堆没有啥区别的字节流)。假设HTTP/1.1使用一个TCP连接来实现多路复用,现在要传输
index.js
和style.css
两个文件,内容如下:注: 两个文件数据载荷+请求头混淆地穿插在一个TCP中(单个文件的数据载荷+请求头是有序的)。
浏览器在开始分析js时,期望有1000个字节(content-length),当接收到600个字节时,开始读取css文件,最终将css头部和一部分css内容当做js,TCP此时已经接收了2个包,第3个包传输剩余的css,由于第3个包已经没有了头部信息,浏览器直接扔掉。由于前面接收到的js不是有效的js内容,最终失败。
传输的3个包packet1, packet2, packet3,内容分别如下:
最终packet1和packet2合成index.js交有浏览器处理
头信息为(index.js的头信息当做头信息,style.css的头信息当做index.js内容的一部分):
index.js:
由于index.js不是有效的js文件,被浏览器扔掉,至此,没有正确请求到内容。
第 140 题:为什么 HTTP 1.1 不能实现多路复用