前端高频面试题day3

06-01 1211阅读

JavaScript作用域理解

核心概念

  • 作用域:定义变量/函数的可见范围及生命周期,分为 全局作用域、函数作用域、块级作用域。
  • 作用域链:变量查找从当前作用域逐级向上直至全局,遵循词法作用域(静态作用域)。
  • 闭包:函数能访问并保留其声明时的外部变量,即使外部作用域已销毁。

    作用域类型

    1. 全局作用域

    • 定义:在函数/代码块外声明的变量。
    • 特点:全局有效,易污染全局命名空间(如 window 对象属性)。

      2. 函数作用域

      • 定义:函数内部声明的变量。
      • 特点:
        • 函数内部有效,外部不可访问。
        • var 声明的变量具有函数作用域,存在变量提升。

          3. 块级作用域(ES6新增)

          • 定义:由 {} 包裹的代码块(如 if、for、while)。
          • 特点:
            • let/const 声明的变量仅在块内有效,避免变量泄漏。
            • 解决 var 的块级作用域缺陷。

              var、let、const 的区别

              特性varlet/const
              作用域函数作用域块级作用域
              变量提升声明提升,赋值不提升(初始值为 undefined)声明提升,但处于“暂时性死区”(TDZ)
              重复声明允许重复声明禁止重复声明
              可变性可重新赋值let 可变,const 不可变
              全局属性全局变量成为 window 的属性不成为 window 的属性
              初始化允许未初始化(var a;)const 必须初始化

              let 全局变量能否通过 window 访问?

              • 答案:不能。
              • 原因:
                • ES6 后,let/const 声明的全局变量不挂载到全局对象(如 window)。
                • 仅 var 声明的全局变量会成为 window 的属性。

                  Object.keys() 返回值是否有序?

                  • 规范:未强制保证顺序,但现代引擎通常遵循:
                    • 非数字键按插入顺序排列。
                    • 数字键按升序排列(如 "1" 在 "2" 之前)。
                    • 建议:不可依赖顺序,需显式排序。

                      Fetch API 的优缺点

                      优点

                      • 基于 Promise:支持 async/await,代码简洁。
                      • 流式处理:可逐步读取大文件或实时数据。
                      • 灵活配置:支持自定义方法、头信息、请求体等。

                        缺点

                        • 默认不发送 Cookies:需 credentials: 'include'。
                        • 兼容性问题:不支持 IE 等旧浏览器。
                        • 错误处理需手动干预:需检查 response.ok。

                          BigInt 与 Number 的区别

                          特性NumberBigInt
                          数据类型双精度浮点数(IEEE 754)任意精度整数
                          范围安全整数范围:±(2^53 -1)无限制,可表示任意长度整数
                          语法直接书写(如 42)后缀 n(如 42n)或 BigInt()
                          运算规则支持浮点运算及特殊值(如 NaN)仅整数运算,不能与 Number 直接混合
                          应用场景通用数值计算处理超大整数(如加密、金融计算)

                          尾调用(Tail Call)

                          • 定义:函数的最后一步操作是调用另一个函数(包括自身),且返回值直接传递。
                          • 好处:
                            • 避免栈溢出:通过尾调用优化(TCO)复用栈帧。
                            • 节省内存:无需保留当前函数的执行上下文。
                            • 优化递归:将深度递归转化为迭代式执行。

                              ES6 新特性(精选)

                              1. 块级作用域:let/const 解决 var 的变量提升问题。
                              2. 箭头函数:简化语法,无 this 绑定。
                              3. 类与继承:class/extends 糖语法。
                              4. 解构赋值:const [a, b] = arr;。
                              5. 模板字符串:反引号支持多行和插值。
                              6. Promise:标准化异步编程。
                              7. Map/Set:更高效的数据结构。
                              8. 扩展运算符:[...arr] 展开数组。
                              9. 默认参数:function(a=1) {}。
                              10. Symbol:唯一且不可变的标识符。

                              箭头函数能否作为构造函数?

                              • 答案:不能。
                              • 原因:
                                • 箭头函数无 [[Construct]] 内部方法,无法通过 new 实例化。
                                • 无 this 绑定能力,继承外层 this,无法创建新对象。

                                  箭头函数 vs 普通函数

                                  特性普通函数箭头函数
                                  this 绑定动态绑定(调用上下文决定)词法绑定(继承外层 this)
                                  语法需 function 关键字简写 =>,省略 return
                                  构造函数可通过 new 实例化不能作为构造函数
                                  arguments内置 arguments 对象无,需用 ...args 替代
                                  super支持(类中调用父类)不支持
                                  函数提升支持(声明前可调用)不支持(必须先声明)
                                  前端高频面试题day3
                                  (图片来源网络,侵删)
                                  前端高频面试题day3
                                  (图片来源网络,侵删)
                                  前端高频面试题day3
                                  (图片来源网络,侵删)
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

相关阅读

目录[+]

取消
微信二维码
微信二维码
支付宝二维码