es6面试常见问题╮(╯▽╰)╭

发布于:2025-04-17 ⋅ 阅读:(23) ⋅ 点赞:(0)

ES6(ECMAScript 2015)的一些常见面试问题,涵盖了变量声明、箭头函数、模板字符串、解构赋值、模块化、类、Promise、生成器等关键特性。有些面试就是问问,对老程序员面试其实不问这么多╮(╯▽╰)╭

文章目录

1. 变量声明

1.1 letconstvar 的区别是什么?
  • 回答
    • var
      • 函数作用域或全局作用域。
      • 可以重新声明和重新赋值。
      • 存在变量提升(hoisting)。
    • let
      • 块级作用域({} 内)。
      • 可以重新赋值,但不能重新声明。
      • 存在暂时性死区(temporal dead zone)。
    • const
      • 块级作用域。
      • 不能重新声明和重新赋值(对于基本类型),但可以修改对象和数组的属性。
      • 存在暂时性死区。
1.2 什么是变量提升(hoisting)?
  • 回答
    • 变量提升是指变量和函数声明在代码执行前被移动到作用域的顶部。
    • var 声明会被提升,但赋值不会。
    • letconst 声明也会被提升,但在声明之前访问会导致 ReferenceError

2. 箭头函数

2.1 什么是箭头函数?箭头函数与普通函数有什么区别?
  • 回答
    • 箭头函数:使用箭头 => 定义的函数。
      const add = (a, b) => a + b;
      
    • 区别
      • 语法更简洁
      • 没有自己的 this 绑定:箭头函数继承自父作用域的 this
      • 没有 arguments 对象:箭头函数没有 arguments 对象,可以使用剩余参数(rest parameters)。
      • 不能用作构造函数:不能使用 new 关键字。
      • 没有 prototype 属性
2.2 箭头函数中的 this 是如何工作的?
  • 回答
    • 箭头函数没有自己的 this 绑定,它继承自父作用域的 this
    const obj = {
         
      name: 'Alice',
      greet: function() {
         
        setTimeout(() => {
         
          console.log(`Hello, ${
           this.name}`);
        }, 1000);
      }
    };
    
    obj.greet(); // 输出: Hello, Alice
    

3. 模板字符串

3.1 什么是模板字符串?模板字符串与普通字符串有什么区别?
  • 回答
    • 模板字符串:使用反引号(`)定义的字符串,支持内嵌表达式。
      const name = 'Alice';
      const greeting = `Hello, ${
               name}!`;
      
    • 区别
      • 支持多行字符串:可以包含换行符。
      • 支持内嵌表达式:使用 ${expression} 语法。
      • 更好的可读性:适合构建复杂的字符串。

4. 解构赋值

4.1 什么是解构赋值?解构赋值有哪些用途?
  • 回答
    • 解构赋值:从数组或对象中提取数据并赋值给变量。
      const [a, b] = [1, 2];
      const {
              name, age } = {
              name: 'Alice', age: 25 };
      
    • 用途
      • 数组解构:从数组中提取元素。
      • 对象解构:从对象中提取属性。
      • 函数参数解构:在函数参数中使用解构。
4.2 如何使用默认值进行解构赋值?
  • 回答
    • 可以为解构赋值提供默认值。
      const [a = 1, b = 2] = [5];
      console.log(a, b); // 输出: 5 2
      
      const {
              name = 'Guest', age = 18 } = {
             };
      console.log(name, age); // 输出: Guest 18
      

5. 模块化

5.1 什么是模块化?ES6 模块化有哪些关键字?
  • 回答
    • 模块化:将代码分割成独立的模块,便于管理和复用。
    • 关键字
      • export:导出模块内容。
        <

网站公告

今日签到

点亮在社区的每一天
去签到