知识碎片

尾递归

例子功能,输入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};是我之前常用的对象拷贝

但是在负责对象下,这种拷贝只针对基础类型,拷贝后的对象 还是指向原地址

例如:

b.c.d=2; 后 发音console.log(a)
咋发现 a.c.d也变成了2
所以还是JSON.parse(JSON.stringify(c))在复杂对象中拷贝最好用 

 

css与dom的匹配

css文件在节点匹配时 是从右到左 所以 .class div 会匹配到所以的div在往上匹配.class 


实时聊天

长轮询请求 或者 websocket 

 

ES5转ES6是 想看看let是怎么实现的,原来的猜想是闭包,实时不是,只是换了个变量名

//源码
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)
}
View Code

 

对象遍历

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点准时抢 测试后发现问题 点击一些就好了 一直点击 会重复退出队列在进入新的队列,所以只能点一下,下次优化下,争取抢到

posted @ 2018-04-02 12:01  V黑匣子  阅读(127)  评论(0编辑  收藏  举报