Jay Zangwill
Jay Zangwill
```javascript // 方法一: const find = (S, T) => S.search(T) // 方法二: const find = (S, T) => { const matched = S.match(T) return matched ? matched.index : -1 }...
思路是把0剔除出来,然后再塞进去- - ```javascript function moveZero(arr) { let num = 0 let index = -1 while ((index = arr.indexOf(0)) > -1) { num++ arr.splice(index, 1) } while (num--) { arr.push(0) }...
补充一下 @webproblem 童鞋的回答吧: BFC特性: 1. 内部box会在垂直方向,一个接一个地放置。 2. Box垂直方向的距离由margin决定,在一个BFC中,两个相邻的块级盒子的垂直外边距会产生折叠。 3. 在BFC中,每一个盒子的左外边缘(margin-left)会触碰到容器的左边缘(border-left)(对于从右到左的格式来说,则触碰到右边缘) 4. 形成了BFC的区域不会与float box重叠 5. 计算BFC高度时,浮动元素也参与计算 生成BFC除了 @webproblem 童鞋所说的还有:行内块元素、网格布局、contain值为layout、content或 strict的元素等。 更多生成BFC的方法:[传送门](https://developer.mozilla.org/zh-CN/docs/Web/Guide/CSS/Block_formatting_context) BFC作用: 1. 利用特性4可实现左图右文之类的效果: ```html 我是超长的文字 ``` ```css img { float:left...
```javascript function searchMaxStr(str) { const result = {} const continuous = str.match(/(\w)\1+/g) const max = continuous.reduce((max, curStr) => curStr.length > max ? curStr.length : max, 0) continuous.forEach(item => { if...
自己实现的new有个小小的细节问题: `return typeof result === 'object' ? result : obj` 如果Con构造函数返回的是null,那么这个函数最终返回的是null,然而这与实际的new操作符是不符的,实际的new操作符是会把创建的对象返回的,例如: ``` function A(){return null} new A() // A{} ``` 所以最后那个返回代码的判断是不是要改成: `return typeof result&&result === 'object' ? result : obj`
对于第一个问题前面的文章都说得很详细了我这里就不再赘述 第二个问题可以参考我写的[博文](https://jayzangwill.github.io/blog/2019/02/07/cache/) **命中强制缓存时,该从哪拿缓存**小节。 总的来说: 1. 如果开启了Service Worker首先会从Service Worker中拿 2. 如果新开一个以前打开过的页面缓存会从Disk Cache中拿(前提是命中强缓存) 3. 刷新当前页面时浏览器会根据当前运行环境内存来决定是从 Memory Cache 还是 从Disk Cache中拿(可以看到下图最后几个文件有时候是从 Memory Cache中拿有时候是从Disk Cache中拿)  **注意**:以上回答全部基于chrome浏览器
循环这个功能目前暂时还没完成,目前还在想怎么去实现T_T