🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] # 题1、什么是闭包? 答: 闭包就是能够读取其他函数内部变量的函数。简单理解成"定义在一个函数内部的函数"。 1. 闭包函数是指有权访问另一个函数作用域中的变量的函数 2. 创建闭包函数最常见的方式是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量 3. 闭包的特点: * 函数嵌套函数 * 函数内部可以引用外部的参数和变量 * 参数和变量不会被垃圾回收机制回收 4. 闭包的优点: * 变量能长期驻扎在内存中 * 减少全局变量的污染 * 私有变量存在 * 创建命名空间 5. 闭包的实现: * 函数嵌套函数 * 外层函数返回内层函数 * 外面有一全局变量接受外层函数 6. 闭包的缺点:闭包使用不当,会造成内存污染,正常无法垃圾回收机制清掉,IE低版本会造成内存泄露。 解决方法是,在退出函数之前,将不使用的局部变量全部删除 7. 闭包的用途: * 可以读取函数内部的变量 * 让这些变量的值始终保持在内存中 # 题2、eval 是干什么用的? ​ ​ 答:是 JavaScript 中的一个函数,用途:把一个字符串当作 JavaScript 代码来执行。 ~~~ let str = "var age = 100;" ​ // 把 str 字符串解析成 JavaScript 代码来执行 eval(str) // 相当于执行了 var age = 100 这行代码 ​ console.log(age) // 100 ~~~ # 题3、正则表达式中的 g 代表什么? ​ ​ 答: g 全局匹配,匹配所有满足条件的字符。 ~~~ let a = 'a3232fafda32'; a.replace(/\d/, '*')   // a*232fafda32 (匹配第一个) a.replace(/\d/g, '*')     // a****fafda** (全局匹配) ~~~