什么是闭包(Closure)
闭包就是能够读取其他函数内部变量的函数。
在Javascript中,只有函数内部的子函数才可以读取局部作用域的变量,所以可以将闭包理解为“定义在一个函数内部的函数”
闭包就是函数内部与外部之间的桥梁
const tmp = '变量'
const add = function () {
console.log(tmp); //变量
}
这就是一个最为简单的闭包,在函数内部可以访问到外部定义的变量。它们组合到一起称之为闭包。
function sum() {
let tmp = 1
function add() {
tmp++
return tmp
}
return add
}
const Sum=sum()
console.log(Sum()); //2
tmp变量和add()函数组成闭包
使用return add是为了可以让外面访问到这个函数。
==和===的区别
- == 两边类型不同时,先进行类型转换,然后再进行比较
- === 不管两边的类型是否相同,直接进行比较 ==类型转换过程:
- 如果类型不同,进行类型转换
- 判断比较的是否是 null 或者是 undefined, 如果是, 返回 true .
- 判断两者类型是否为 string 和 number, 如果是, 将字符串转换成 number
- 判断其中一方是否为 boolean, 如果是, 将 boolean 转为 number 再进行判断
- 判断其中一方是否为 object 且另一方为 string、number 或者 symbol , 如果是, 将 object 转为原始类型再进行判断