知识碎片
尾递归
例子功能,输入5 及选出5的乘阶 及5*4*3*2*1
方法1
console.time() function factorial(n) { if (n === 1) return aa; return n * factorial(n - 1); } console.log(factorial(20)) console.timeEnd()
方法2
console.time() function factorial1(n, total) { if (n === 1) return total; return factorial1(n - 1, n * total); } console.log(factorial1(20, 1));
2个时间打印出来 差距了10倍,原因
方法1,一直计算到n=1,在吧所有结果汇总计算
方法2,计算到1直接返回
时间操作
之前使用Moment.js,200k并且还需要转类型
day.js 3k 返回的是data类型
ES6 对象拷贝
const a={a:1,b:2,c:{d:1,e:2}}
let b=object.assign(a) 和let b={...a};是我之前常用的对象拷贝
但是在负责对象下,这种拷贝只针对基础类型,拷贝后的对象 还是指向原地址
例如:
css与dom的匹配
css文件在节点匹配时 是从右到左 所以 .class div 会匹配到所以的div在往上匹配.class
实时聊天
长轮询请求 或者 websocket
ES5转ES6是 想看看let是怎么实现的,原来的猜想是闭包,实时不是,只是换了个变量名
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//源码 function(){ var b=105; for(let i=0;i<5;i++){ let b=5; console.log(b); b++; } b++; console.log(b); } //编译后 只是换了变量名 function aa(){ for(var t=105,s=0;s<5;s++){ var i=5;console.log(i),i++ } t++,console.log(t) }
对象遍历
const cars = { 'BMW': 3, 'Tesla': 2, 'Toyota': 1 };
const vals = Object.keys(cars).map(key => cars[key]);
console.log(vals); //[3, 2, 1]
//使用
const values = Object.values(cars);
console.log(values); // [3, 2, 1]
Array.sort 函数 当0的情况的下 也会排序 交换位置
UI组件
如vue的ele-ui 或者 react的andt-ui
里面用到的组件,常用组件觉得都应该在简单的封一次,以防止后续版本的变更产生的影响过大,也可以做一个统一的操作
例如 :表格在pc端是正常的表格 ,在手机端则要求卡片展示,开发后期加,工作量过大,有统一处理,则方便很多
小米抢机
在小米官网打印console.log($) 发现有引用JQ
1 setInterval(function(){ 2 if(new Date().getHours()==10){ 3 $(".countdown>a").click() 4 } 5 },10)
10点准时抢 测试后发现问题 点击一些就好了 一直点击 会重复退出队列在进入新的队列,所以只能点一下,下次优化下,争取抢到