【跟着大佬学JavaScript】之lodash防抖节流合并
前言前面已经对防抖和节流有了介绍,这篇主要看 lodash 是如何将防抖和节流合并成一个函数的。
初衷是深入 lodash,学习它内部的好代码并应用,同时也加深节流防抖的理解。这里会先从防抖开始一步步往后,由简入繁,直到最后实现整个函数。
这里纯粹自己的理解,以及看了很多篇优质文章,希望能加深对节流防抖的理解,如果有不同意见或者看法,欢迎大家评论。
原理前面虽然已经介绍过防抖和节流原理,这里为了加深印象,再搬过来。
防抖的原理:在 wait 时间内,持续触发某个事件。第一种情况:如果某个事件触发 wait 秒内又触发了该事件,就应该以新的事件 wait 等待时间为准,wait 秒后再执行此事件;第二种情况:如果某个事件触发 wait 秒后,未再触发该事件,则在 wait 秒后直接执行该事件。
通俗点说:定义 wait=3000,持续点击按钮,前后点击间隔都在 3 秒内,则在最后一次点击按钮后,等待 3 秒再执行 func 方法。如果点击完按钮,3 秒后未再次点击按钮,则 3 秒后直接执行 func 方法。
节流的原理:持续触发某事件,每隔一段时间,只执行一次。
通俗点 ...
【ES6学习笔记】之 变量
概览ES6 新增了两个定义变量的关键字:let 与 const,它们几乎取代了 ES5 定义变量的方式:var。let是新的var,const简单的常量声明。
12345678910111213function f() { { let x { // okay, block scoped name const x = 'sneaky' // error, const x = 'foo' } // error, already declared in block let x = 'inner' }}
ES6 之前变量之前存在两个问题:
JS 没有块级作用域。在 JS 函数中的 var 声明,其作用域是函数体的全部。
循环内变量过度共享
块级作用域let,const创建的变量都是块级作用域:它们只存在包围它们的最深代码块中。
作用域有哪些?
块级作用域
函数作用域
全局作用域
1234567 ...
【ES6学习笔记】之 解构赋值
概览
解构只是意味着将复杂的结构分解成更简单的部分。在 JavaScript 中,这种复杂的结构通常是一个对象或一个数组。使用解构语法,您可以从数组和对象中提取更小的片段。解构语法可用于变量声明或变量赋值。您还可以使用嵌套解构语法来处理嵌套结构。
123456789101112131415161718192021222324// oldconst student = { name: 'John Doe', age: 16, scores: { maths: 74, english: 63, science: 85, },}function displaySummary(student) { console.log('Hello, ' + student.name) console.log('Your Maths score is ' + (student.scores.maths || 0)) console.log('Your En ...
【Echarts使用】之 拐点圆样式
1234567891011121314series:[ { type: 'line', connectNulls: true,//无数据是是否连线 stack: 'Total', symbol: 'circle', //拐点样式 symbolSize: 4, //拐点圆大小 itemStyle: { color: '#292B37', //拐点内圆颜色 borderColor: '#5B5E74', //拐点外圆颜色 width: 2, //拐点内圆大小 }, }]
【Echarts使用】之 设置柱状图渐进式
1234567891011121314151617181920212223242526272829303132series:[ { type: 'bar', stack: 'Total', itemStyle: { borderRadius: [4, 4, 4, 4], // 圆柱 color: function (params) { //首先定义一个数组 const colorList = [ { x: 0, y: 1, x2: 0, y2: 0, colorStops: [{ ...
【Echarts使用】之 设置从原点开始
123xAxis:{ boundaryGap: false, // 不留白,从原点开始}
【Echarts使用】之 设置柱子borderRadius
1234567891011121314151617series:[ { type: 'bar', stack: 'Total', itemStyle: { borderColor: bgColor, borderRadius: [4, 4, 4, 4], // 圆柱 color: bgColor }, emphasis: { itemStyle: { borderColor: bgColor, color: bgColor } }, }]
【Echarts使用】之 无数据是连线
1234567891011121314series:[ { type: 'line', connectNulls: true,//无数据是是否连线 stack: 'Total', symbol: 'circle', //拐点样式 symbolSize: 4, //拐点圆大小 itemStyle: { color: '#292B37', //拐点内圆颜色 borderColor: '#5B5E74', //拐点外圆颜色 width: 2, //拐点内圆大小 }, }]
【Echarts使用】之 无拐点
无拐点123456789series: [ { data: [820, 932, 901, 934, 1290, 1330, 1320], type: 'line', smooth: true, //关键点,为true是不支持虚线的,实线就用true symbolSize:0, // 折线拐点圆的大小 }]
折线线型1234567891011121314series: [ { data: [820, 932, 901, 934, 1290, 1330, 1320], type: 'line', lineStyle:{ width:2, type:'dotted' //'dotted'虚线 'solid'实线 'dashed'虚线 } ...
【Echarts使用】之 grid
示例1234567grid: { top: '3%', left: '12%', right: '0%', bottom: '3%', containLabel: true},
echarts 组件离容器左侧的距离。
containLabel:containLabel 为 false 的时候:grid.left grid.right grid.top grid.bottom grid.width grid.height 决定的是由坐标轴形成的矩形的尺寸和位置。这比较适用于多个 grid 进行对齐的场景,因为往往多个 grid 对齐的时候,是依据坐标轴来对齐的。
containLabel 为 true 的时候:grid.left grid.right grid.top grid.bottom grid.width grid.height 决定的是包括了坐标轴标签在内的所有内容所形成的矩形的位置。这常用于『防止标签溢出』的场景,标签溢出指的是,标签长度动态变 ...