
js
guolinengineer
渴望知识的一个小白
展开
-
js中的偏函数
使用bind()我们设定函数的预定义参数,然后调用的时候传入其他参数即可:function list() { return Array.prototype.slice.call(arguments);}var list1 = list(1, 2, 3); // [1, 2, 3]// 预定义参数37var leadingThirtysevenList = list.bind(u...原创 2018-11-21 12:01:23 · 805 阅读 · 0 评论 -
行内元素和块级元素
行内元素:不会占据新的一行只能行内元素,不能包含块级元素行内元素不可以设置宽高,宽度高度随文本内容的变化而变化,但是可以设置行高(line-height),同时在设置外边距margin上下无效,左右有效,内填充padding上下无效,左右有效;块级元素:会占据新的一行块级元素中可以包含块级元素和行内元素块级元素可以设置宽高,并且宽度高度以及外边距,内填充都可随意控制。...原创 2018-12-20 15:57:30 · 568 阅读 · 0 评论 -
在JS中消灭for循环
一,用好 filter,map,和其它 ES6 新增的高阶遍历函数问题一:将数组中的 false值去除const arrContainsEmptyVal = [3, 4, 5, 2, 3, undefined, null, 0, ""];答案:const compact = arr => arr.filter(Boolean); 问题二: 将数组中的 VIP 用户...转载 2018-12-10 10:11:33 · 391 阅读 · 0 评论 -
三次握手四次挥手
名词解释:SYN (synchronous) 建立联机ACK (acknowledgement) 确认PSH (push) 传送FIN (finish结束)RST (reset) 重置URG (urgent) 紧急Sequence number (顺序号码)Acknowledge number 确认号码establish 建立TCP 解释:TCP(Tra...原创 2018-12-21 11:15:37 · 289 阅读 · 0 评论 -
浏览器渲染过程
1. 解析html,生成DOM树,解析css,生成CSSOM树2.将DOM树和CSSDOM树结合,生成渲染树(Render Tree)3.Layout (回流):根据生成的渲染树,进行回流(Layout),得到节点的几何信息(位置,大小)4.Painting(重绘):根据渲染树的以及回流得到的几何信息,得到节点的绝对像素5.Display:将像素发送给gpu,展示在页面上,(这一步...原创 2018-12-17 11:24:36 · 146 阅读 · 0 评论 -
最小化重绘和重排
const e1 = document.getElementById('test');e1.style.padding = '5px';e1.style.borderLeft = '1px';e1.style.borderRight = '2px';上面例子中,三个样式被修改(几何结构改变),每一个都会引起回流。当然,大部分浏览器都做了优化,只会触发一次重排。但是如果旧版浏览器浏览或者...转载 2018-12-17 16:42:40 · 410 阅读 · 0 评论 -
观察者模式和发布订阅模式
差异在观察者模式中,观察者需要直接订阅目标事件。在目标发出内容改变的事件后,直接接收事件并作出响应。发布订阅模式相比观察者模式多了个事件通道,订阅者和发布者不是直接关联的。比如你去外面吃饭,就经常出现两种模式1.观察者模式:你进入餐馆,坐在餐馆里等待叫号,当叫号时,你就知道又有人可以吃饭了,你会下意识的看看自己的号。这个过程就是观察者模式。餐馆是观察的对象,餐馆的座位是观察者队列,叫号...原创 2018-12-18 14:54:31 · 296 阅读 · 0 评论 -
今日头条async/await面试题执行顺序
async function async1 () { console.log('async1 start') await async2(); console.log('async1 end')}async function async2 () { console.log('async2')}console.log('script start')setTimeout...原创 2018-12-18 18:35:52 · 5022 阅读 · 7 评论 -
vue 有get前缀的函数
export default class DIDAnchor extends Vue { classPrefix = classPrefix get anchorClassifyList () { let list = [...this.$store.state.anchorClassifyList] list.unshift({ label: '全部',...原创 2018-12-04 11:53:13 · 1304 阅读 · 0 评论 -
背景图片的切合
如果背景图片分辨率太高,可以用background-size进行转换和贴合原创 2018-12-12 21:02:30 · 135 阅读 · 0 评论 -
箭头函数的{}和()是不同的
users.map( user => { user.isVIP ? {...user, balance: user.balance + 10} : user } )users.map( user => ( user.isVIP ? {...user, balance: user.balance + 10} : user ) )上面两者是不同的,一个是运算,一个是直接返回...原创 2018-12-12 21:23:07 · 315 阅读 · 1 评论 -
全面理解JS(函数)执行顺序
第一步: 检查语法错误 浏览器或者node环境将所有JS检查一遍,检查是否有语法错误,注意并不会执行,这里是确保可执行,然后进行第二步:预编译第二步:预编译预备知识:变量提升 首先要理解函数声明整体提升,变量 声明提升。这里要注意变量的提升,一般我们声明一个变量都是var a = 1;console.log(a) //1//但实际上拆分成了两步,真正执行是这样的...原创 2018-12-13 23:36:08 · 8489 阅读 · 2 评论 -
开发环境,测试环境与生产环境的区别
三个环境指项目开发的三个阶段:开发->测试->上线其中生产环境也就是通常说的真实环境。开发环境:项目尚且在编码阶段,我们的代码一般在开发环境中 不会在生产环境中,生产环境组成:操作系统 ,web服务器 ,语言环境。 php 。 数据库 。 等等测试环境:项目完成测试,修改bug阶段生产环境:项目数据前端后台已经跑通,部署在阿里云上之后,有客户使用,访问,就是网站正式运...原创 2018-12-07 12:04:29 · 2987 阅读 · 1 评论 -
js es6中includes 和 原生的indexOf 的区别
在ES5,Array已经提供了indexOf用来查找某个元素的位置,如果不存在就返回-1,但是这个函数在判断数组是否包含某个元素时有两个小不足,第一个是它会返回-1和元素的位置来表示是否包含,在定位方面是没问题,就是不够语义化。另一个问题是不能判断是否有NaN的元素 ES6提供了Array.includes()函数判断是否包含某一元素,除了不能定位外,解决了indexOf的上述的两个问题。...原创 2018-12-26 10:23:04 · 3925 阅读 · 0 评论