笔记

  1. node连接数据库时需要设置时区,不然查出来的时间格式不是东八区

  2. no-referrer-when-downgrade 是 chrome 自动加的,表示从 https 降级到 http 时不发送 reffer

  3. Buffer.byteLength 获取字符串的字节长度

  4. position: sticky

  5. 设置父元素overflow:hidden 解决浮动后没有高度

  6. 聚合

    array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
    initialValue 初始值
    total	必需。初始值, 或者计算结束后的返回值。
    currentValue	必需。当前元素
    currentIndex	可选。当前元素的索引
    arr	可选。当前元素所属的数组对象。
    
    
  7. Object的hasOwnProperty()方法返回一个布尔值,判断对象是否包含特定的自身(非继承)属性。
    在看开源项目的过程中,经常会看到类似如下的源码。for…in循环对象的所有枚举属性,然后再使用hasOwnProperty()方法来忽略继承属性。

    var foo = {
    hasOwnProperty: function() {
        return false;
    },
    bar: 'Here be dragons'
    };
    
    foo.hasOwnProperty('bar'); // 始终返回 false
    
    // 如果担心这种情况,可以直接使用原型链上真正的 hasOwnProperty 方法
    // 使用另一个对象的`hasOwnProperty` 并且call
    ({}).hasOwnProperty.call(foo, 'bar'); // true
    
    // 也可以使用 Object 原型上的 hasOwnProperty 属性
    Object.prototype.hasOwnProperty.call(foo, 'bar'); // true
    
  8. []![] true
    在相等运算符中,如果运算符两边的值有一个是布尔类型,则会把true转换成1,false则转换为0
    相等运算符如果有一边是数字,而另一边是对象,则会把对象转换成数字。而空的数组对象转换成数字是0
    ![]会转化为0, 而空的数组对象[]转换成数字是0 所以为true
    []
    =![] 全等的话,为false

  9.   console.log(f1); // function f1() {}
      function f1() {}; // 函数声明
    
      console.log(f2); // undefined
      var f2 = function() {} // 函数表达式
    
  10. js深拷贝

    1. slice和concat这两个方法,仅适用于对不包含引用对象的一维数组的深拷贝,对于对象数组的操作,还是浅拷贝
    2. JSON对象的parse和stringify (对象中不含有函数的话。JSON解析反解析就行了,对于有函数属性的话,不起作用,会直接去除function)
    3. . e x t e n d ( [ d e e p ] , t a r g e t , o b j e c t 1 [ , o b j e c t N ] ) j q u e r y 的 方 法 e x t e n d b = .extend( [deep], target, object1 [, objectN] ) jquery的方法extend b= .extend([deep],target,object1[,objectN])jqueryextendb=.extend(true,[],a);
    4. 递归复制
    5. let d = JSON.parse(JSON.stringify(a));//深复制包含子对象
      let c = {…a};//拷贝一层但不包含子对象
      b = a;//浅拷贝
    	// 基本类型 是深拷贝
    	var a = 1;
    	var b = a;
    	a = 2;
    	console.log(a, b); // 2, 1 ,a b指向不同的数据
    	
    	// 引用类型指向同一份数据
    	var a = {c: 1};
    	var b = a;
    	a.c = 2;
    	console.log(a.c, b.c); // 2, 2 全是2,a b指向同一份数据
    	
    	作者:颜海镜
    	链接:https://juejin.im/post/5bc1ae9be51d450e8b140b0c
    	来源:掘金
    	著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    
  11. node最新版本Node.js 10.11.0 2018-09-19 6.8.275.32 6.4.1 64

  12. 使用 Array.every 和 Array.some 来处理全部/部分满足条件

  13. 因为作用域链,外部不能访问内部的变量和方法,这时我们就需要通过闭包,返回内部的方法和变量给外部,从而就形成了一个闭包。

  14. 父元素不写高度时,子元素写了浮动后,父元素会发生高度塌陷,所以要清除浮动(给父级添加overflow:hidden 清除浮动方法,万能清除法 after伪类 清浮动(现在主流方法,推荐使用))

    .float_div:after{
        content:".";
        clear:both;
        display:block;
        height:0;
        overflow:hidden;
        visibility:hidden;
    }
    
  15. 弹簧振动效果css,类似于苹果手机打开图片 Transition: 0.6s cubic-bezir(.29,1.1,.29,1.1)

  16. github 徽章 https://img.shields.io/discourse/https/meta.discourse.org/topics.svg

/*

  • 无重复字符的最长子串
  • leetcode 算法题3
    */

// 解法一
var map = {};
var head = 0;
var i = 0;
var max = 0;
for (i; i < s.length; i++) {
if (map[s[i]] >= head) {
head = map[s[i]] + 1;
}
map[s[i]] = i;
max = max > i - head + 1 ? max : i - head + 1;
}
return max;

// 解法二
const map = {};
let left = 0;
let max = s.split(’’).reduce((max, v, i) => {
/*

  • map[v] 初始为underfined,表明s[i]还没出现过,
  • 一旦map[v]有值了,且大于left,就将left的值设为map[v]后一位
    */
    left = map[v] >= left ? map[v] + 1 : left;
    map[v] = i;
    return Math.max(max, i - left + 1);
    }, 0);
    console.log(max);

你可能感兴趣的:(每日笔记)