闭包 双=和三=的区别

166 阅读1分钟

什么是闭包(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是为了可以让外面访问到这个函数。

==和===的区别

  • == 两边类型不同时,先进行类型转换,然后再进行比较
  • === 不管两边的类型是否相同,直接进行比较 ==类型转换过程:
  1. 如果类型不同,进行类型转换
  2. 判断比较的是否是 null 或者是 undefined, 如果是, 返回 true .
  3. 判断两者类型是否为 string 和 number, 如果是, 将字符串转换成 number
  4. 判断其中一方是否为 boolean, 如果是, 将 boolean 转为 number 再进行判断
  5. 判断其中一方是否为 object 且另一方为 string、number 或者 symbol , 如果是, 将 object 转为原始类型再进行判断