面向开发人员的10个最常见的ES6面试问题和答案

2021年11月10日18:35:09 发表评论 1,017 次浏览

ES6面试问题和答案介绍:当 JavaScript 出现在编程世界的画面中时,出于营销原因选择了这个名字。那时 Java 在世界各地都很流行(但你最好知道两者是不同的)。后来它被提交给 ECMA(欧洲计算机制造商协会)以标准化该语言及其规范。 

面向开发人员的10个最常见的ES6面试问题和答案

后来它被命名为 ES 的 ECMAScript。第一版于 1997 年 6 月发布。ES6 是该语言的第六版,后来更名为 ECMAScript 2015。该版本引入了许多新特性,例如类、模块、迭代器、for/of 循环、箭头函数、类型化数组、承诺、反思等。 

常见的ES6面试题和答案有哪些?2016 年 6 月,ES6 发布,后来更名为 ECMAScript 2015。2017 年 6 月,第 8 版发布,其中包含一些并发和原子性、与 promise 的语法集成(async/await)的功能。让我们讨论一些你应该为面试准备的常见问题。这些问题将有助于清除专门针对前端开发角色的面试。 

1.什么是公共ES6的功能设定?

以下是 ES6 的共同特性……

  • 支持常量/不可变变量。
  • 块作用域支持变量、常量、函数。
  • 箭头函数
  • 扩展参数处理
  • 默认参数
  • 模板文字和扩展文字。
  • 解构赋值
  • 箭头函数
  • Promises
  • Classes
  • 模块
  • 支持 Map/Set 和 WeakMap/WeakSet
  • Promises、本地化、元编程、国际化

2. let 和 const 是什么?两者与 var 有何不同?

ES6面试问题和答案示例介绍:在 JavaScript 中,当我们使用 var 关键字声明任何变量时。var 关键字是函数作用域。我们可以在函数内访问变量。这导致每当我们必须创建一个新的作用域时,都会将代码包装在一个函数中。 

Let 和 const 都是块作用域。如果你使用这些关键字声明一个变量,那么它只存在于围绕它们的最里面的块中。假设你在块内使用 let 声明了一个变量(如果是条件或 for 循环),那么它只能在块内访问。 

下面是一个 let 关键字的例子……

  • Javascript
if(true) {
    let a=0;
    console.log(a); //prints 0;
}
  
console.log(a); throws ReferenceError: a is not defined.

Const 在 JavaScript 中是不可变的。一旦它被声明,你就不能改变或重新分配它的值。 

  • Javascript
const a=0;
a=1; // TypeError: Assignment to constatnt variable.
const b= [1, 2];
b.push(3); //[1, 2, 3]
b[3]= 4; // [1, 2, 3, 4]

练习使用 let 和 const 而不是 var 关键字。 

3. 什么是箭头函数?普通函数和箭头函数有什么区别?

ES6最新面问题和答案合集 - 在 ES6 中定义了箭头函数来定义函数并使用它。基本上,它是箭头函数的速记符号。你可以将参数列表 (.....) 传递给箭头函数,然后是 =>marker 和函数体。如果你使用单个参数声明箭头函数,则不需要使用括号。

  • Javascript
function add(a, b) {
    return a+b;
};
  
//Implementation with arrow function
  
const add = (a, b) =>a+b;
  
// With single argument, no parenthesis required
  
const add5 = a => 5+a;

让我们讨论箭头函数和普通函数之间的一些区别。

  • 他们没有自己的版本,并且他们关闭了这一点。
  • 它们可以有一个简洁的正文而不是冗长的正文。(他们也可以有一个冗长的身体)
  • 你不能将它们用作构造函数。不允许将 new 与箭头函数一起使用。这只是意味着箭头函数不能有原型属性。
  • 箭头函数没有生成器语法。例如:没有等效于 function *foo() {...} 的箭头。

4. 什么是Set?

ES6最新面问题和答案合集:Set是新值的集合。在 Set 中,不应有任何重复值。所有的值都应该是唯一的。这些值可以是原始类型或对象引用。 

  • Javascript
var mySet = new Set();
  
mySet.add(1); // Set [1]
mySet.add(5); // Set [1, 5]
mySet.add(5); // Set [1, 5] --ignored

NaN 和 undefined 可以存储在 Set 中。 

5. 什么是生成器功能?

常见的ES6面试题和答案有哪些?这是 ES6 的一个新特性。生成器函数允许你随时间生成许多值,返回一个对象。我们可以迭代这个对象,我们可以一次从函数中提取一个值。当你调用生成器函数时,它返回一个可迭代对象。我们在 ES6 中使用 * 符号作为带有新的“yield”关键字的生成器函数。

  • Javascript
function *infiniteNumbers() {
    let n=1;
    while(true) {
        yield n++;
    }
}
  
const numbers = infiniteNumbers(); // returns an iterable object
  
numbers.next(); // { value: 1, done: false}
numbers.next(); // { value: 2, done: false}
numbers.next(); // { value: 3, done: false}

6. ES6 中的展开运算符是什么?

ES6面试问题和答案介绍:展开运算符用于获取参数列表。它由三个点 (...) 表示。基本上展开运算符采用可迭代对象(例如数组或字符串)并将其扩展为单个元素。在 JavaScript 中,主要用于制作 JS 的浅拷贝。它使你的代码简洁并提高了代码的可读性。

你可以使用扩展运算符来组合或执行数组之间的串联。下面给出一个例子......

  • Javascript
let num1 = [40,50,60];  
    
let num2 = [10,20,30,...num1,70,80,90,100];  
    
console.log(num2);

7. ES6 中的解构是什么?

在 ES6 中,解构被引入来从数组和对象中提取数据到一个单独的变量中。它允许你从对象和数组中提取较小的片段。下面给出一个例子......

  • Javascript
let fullname =['Alan','Rickman'];  
let [fname,lname] = fullname;  
console.log (fname,lname);

8. 在 ES6 中定义 Map。

在引入 ES6 之前,我们使用对象来映射键和值。Map 成为 ES6 中一种以键值对表示数据的新方式。Map 是有序的,它会记住键的插入顺序。你可以按元素的插入顺序遍历元素。 

下面是 Map 的表示

var map = new Map([iterable]);

9. 解释 ES6 中的 Promise。

常见的ES6面试题和答案有哪些?在 JavaScript 中,有一个异步编程的概念。在异步编程中,你可以从主线程单独运行进程。在 ES6 中,promise 是处理异步编程的最简单方法。根据操作结果,可以拒绝或解决承诺。在 ES6 中引入 promise 之前,回调用于处理异步编程。 

但它产生了回调地狱的问题,并引入了承诺来克服这个问题。 

10. JavaScript 中的回调和回调地狱是什么?

在回调中,一个函数在另一个函数完成后被执行。在 JavaScript 中,回调有助于处理事件。我们将一个函数作为另一个函数的参数传递给另一个函数。 

当我们在 Web 应用程序中使用回调时,很多时候回调会嵌套。过度使用回调会使你的 Web 应用程序变得混乱并导致回调地狱。 

ES6最新面问题和答案合集总结

我们已经包含了10 个重要的ES6面试问题和答案,这些问题对于面试来说非常重要。除了这些问题,ES6 中还有一些其他重要的概念。例如…

  • JavaScript 中的模块
  • 在 JavaScript 中提升
  • Babel的概念
  • Webpack 的概念
  • Weakset的概念
  • Weakmap的概念
  • 模板文字

要学习 JavaScript,请参阅JavaScript 教程

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: