值类型(number 、 Boolean、 undefined、 null 、string)比较: 只比较是否长得一样
let a= 0;
let b= 0;
或者
let a= null;
let b= null;
或者
let a= undefined;
let b= undefined;
console.log(a === b); //true
引用型(object、Array):比较内存地址
let a = [];
let b = [];
console.log(a === b); //false
栗子:
function fn() {
console.log(this);
} //Object-->引用型类型,实际是交出地址,而不是交出函数
let obj = {
a: fn;
} //引用型,实际上是将fn()函数的地址放在a上,fn()中的this指向执行的环境,这里是obj环境,所以obj.a()输出obj
let f = obj.a; //拿到的是fn()的地址,直接调用fn()的地址,自执行,指向window。所以f()输出window
obj.a() //输出 obj
//this指向obj
f(); //输出 window
function f2(a) {
a(); //没有依赖其他对象执行,所以这里的this指向 window
arguments[0]; //这条语句相当于 arguments.0 ,相当于这里的this指向了arguments,所以f2(fn); 输出arguments
}
function f3(...a) {
a[0](); //a这个数组
}
f2(fn);
f3(fn);