摘抄 juejin.cn/post/684490… N个知识点。
null 和 undefined 区别
undefined是【基本数据类型】 表示未定义 缺少的意思。
null是【引用数据类型】,是对象,表示空对象
undefined是从null派生出来的 所以undefined==null 为 true
== 和 === 区别
== 两边值类型不同的时候,要先进行类型转换,再比较。
=== 不做类型转换,类型不同的一定不等。
==先转换类型再比较,===先判断类型,如果不是同一类型直接为false!!
Cookie 与 Local storage 与 Session storage 区别
| 特性 | Cookie | localStorage | sessionStorage |
|---|---|---|---|
| 数据的生命期 | 一般由服务器生成,可设置失效时间。如果在浏览器端生成Cookie,默认是关闭浏览器后失效 | 除非被清除,否则永久保存 | 仅在当前会话下有效,关闭页面或浏览器后被清除 |
| 存放数据大小 | 4K左右 | 一般为 5MB | |
| 与服务器端通信 | 每次都会携带在HTTP头中,如果使用cookie保存过多数据会带来性能问题 | 仅在客户端(即浏览器)中保存,不参与和服务器的通信 | |
| 易用性 | 需要程序员自己封装,原生的Cookie接口不友好 | 需要程序员自己封装,源生的Cookie接口不友好 源生接口可以接受,亦可再次封装来对Object和Array有更好的支持 |
箭头函数中的 this
1.箭头函数中没有 arguments 箭头函数中如果使用 arguments 属性,拿到的是箭头函数外层函数的 arguments 属性。
function constant() {
return () => arguments[0]
}
let result = constant(1);
console.log(result()); // 1
let nums = (...nums) => nums;
//如果我们就是要访问箭头函数的参数呢?你可以通过这样 ES6 中 命名参数 或者 rest 参数的形式访问参数
2.箭头函数没有构造函数,因为没有构造函数,所以也不能使用 new 来调用,如果我们直接使用 new 调用箭头函数,会报错。箭头函数中没有super。所以this、arguments、new.target这些值由外围最近一层非箭头函数决定。
let fun = ()=>{}
let funNew = new fun();
// 报错内容 TypeError: fun is not a constructor
3.箭头函数没有原型,原型的prototype 是函数的一个属性,但是对于箭头函数没有它。
let fun = ()=>{}
console.log(fun.prototype); // undefined
4.箭头函数中没有自己的this,箭头函数中的 this 不能用 call()、apply()、bind() 这些方法改变 this 的指向,箭头函数中的 this 直接指向的是调用函数的 上一层运行时
var a = 'A'
var obj = {
a: 'B',
foo: () => {
console.log(this.a)
}
}
obj.foo() // "A"