最新ES6面试题及答案汇总整理

最新ES6面试题及答案汇总整理

文章图片
下面列出了一些常见的ES6面试问答。
1)什么是ES6或ECMAScript 2015?
ES6于2015年6月发布, 被称为该语言的第六版。最初, 它被命名为ES6, 后来被重命名为ECMAScript2015。该版本包括几个新功能, 包括模块, 迭代器, 类, 箭头函数, for … of循环, promise等。 Brendan Eich开发了它。
2)定义ECMAScript。
这是ECMA-262标准中定义的规范, 用于创建通用脚本语言。
3)ES6中引入了哪些新功能?
ES6中引入的新功能列出如下:
  • Let和const关键字。
  • 默认参数。
  • 箭头功能。
  • 模板文字。
  • 对象文字。
  • 休息和散布算子。
  • 破坏性分配。
  • 模块, 类, 生成器和迭代器。
  • 承诺, 还有更多。
4)定义let和const关键字。
let:使用let关键字声明的变量将是可变的, 即可以更改变量的值。它与var关键字相似, 除了它提供块作用域。
const:使用const关键字声明的变量是不可变的并且是块作用域的。如果使用const关键字声明了变量的值, 则无法更改或重新分配它们。
5)什么是箭头功能, 如何创建?
箭头功能在ES6中引入。箭头函数是编写ES6函数的简写形式。箭头函数的定义由参数, 后跟箭头(=> )和函数主体组成。
箭头功能也称为” 胖箭头” 功能。我们不能将它们用作构造函数。
语法
const functionName = (arg1, arg2, ...) => { //body of the function}

6)举一个ES6中的Arrow函数的例子吗?列出其优势。
箭头函数为我们提供了一种使用JavaScript编写函数的更准确的方法。它们使我们能够编写较小的函数语法。
箭头函数中的上下文在词法或静态范围内。箭头函数不包含任何原型属性, 并且不能与new关键字一起使用。
单击此链接ES6箭头功能, 可以了解有关箭头功能的更多信息。
例子
var myfun = () => {console.log("It is an Arrow Function"); }; myfun();

输出
It is an Arrow Function

箭头功能的优点
箭头功能的优点如下:
  • 它减少了代码大小。
  • return语句对于单行函数是可选的。
  • 词汇绑定上下文。
  • 对于单行语句, 功能括号是可选的。
7)通过示例讨论ES6中的散布运算符。
扩展算子由三个点(… )表示, 以获取参数列表。它允许在期望的参数超过零的地方扩展可迭代的数组或字符串。
扩展运算符的语法与其余运算符相似, 但功能完全相反。它也可用于组合或执行数组之间的串联。让我们通过一个例子来理解它。
例子
let num1 = [40, 50, 60]; let num2 = [10, 20, 30, ...num1, 70, 80, 90, 100]; console.log(num2);

输出
[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

8)通过示例讨论ES6中的Rest参数。
ES6中引入了它, 以提高处理参数的能力。使用剩余参数, 可以将不确定参数表示为数组。通过使用rest参数, 我们可以调用带有任意数量参数的函数。
例子
function show(...args) {let sum = 0; for (let i of args) {sum += i; }console.log("Sum = "+sum); }show(10, 20, 30);

输出
Sum = 60

9)ES6中的模板文字是什么?
模板文字是ES6中引入的新功能。它提供了创建多行字符串和执行字符串插值的简便方法。
模板文字允许嵌入表达式, 也称为字符串文字。
在ES6之前, 模板文字被称为模板字符串。模板文字用反引号(`)字符括起来。模板文字中的占位符由美元符号和大括号($ {expression})表示。如果需要在反引号内使用表达式, 则可以将该表达式放在($ {expression})中。
要了解有关ES6中模板文字的更多信息, 请单击此链接ES6模板文字。
例子
let str1 = "Hello"; let str2 = "World"; let str = `${str1} ${str2}`; console.log(str);

输出
Hello World

10)在ES6中讨论解构分配。
ECMAScript 2015或ES6中引入了解构, 以从对象和数组中提取数据到单独的变量中。它允许我们从对象和数组中提取较小的片段。
要了解有关ES6中阵列解构的更多信息, 请单击此链接ES6阵列解构。
要了解有关ES6中对象分解的更多信息, 请单击此链接ES6对象分解。
例子
let fullname =['Alan', 'Rickman']; let [fname, lname] = fullname; console.log (fname, lname);

输出
Alan Rickman

11)如何在ES6中创建一个类?
此关键字用于创建类。我们可以通过使用类表达式或通过类声明将类包括在代码中。类定义只能包含函数和构造函数。这些组件一起称为类的数据成员。
类中的构造函数将内存分配给类的对象。类中的函数负责对对象执行操作。
要了解有关ES6中类的更多信息, 请单击此链接ES6类。
让我们看看创建类的语法。
语法:在ES5中
var var_name = new class_name {}

语法:在ES6中(使用class关键字)
class class_name{}

12)你对生成器功能了解什么?
生成器为我们提供了一种使用迭代器和函数的新方式。生成器是一种特殊的功能, 可以在中间暂停一次或多次, 然后可以恢复。声明函数*(function关键字后加星号)用于定义生成器函数。
当生成器被调用时, 它不会运行其代码。而是返回一个特殊的对象, 称为生成器对象以管理执行。让我们看一下ES6中生成器的示例。
要了解有关ES6中的生成器的更多信息, 请单击此链接ES6生成器。
例子
function* gen(){yield 100; yield; yield 200; }// Calling the Generator Functionvar mygen = gen(); console.log(mygen.next().value); console.log(mygen.next().value); console.log(mygen.next().value);

输出
100undefined200

13)默认参数是什么?
通过使用默认参数, 如果没有值或未定义, 则可以使用默认值初始化命名参数。
例子
var show = (a, b=200) => {console.log(a + " " + b); }show(100);

输出
100 200

14)IIFE(立即调用的函数表达式)是什么意思?
IIFE是JavaScript中的一个函数, 它在定义后立即运行。它也被称为自执行匿名函数。它包括两个主要部分, 如下所示:
  • 第一部分是具有词法作用域(静态作用域)的匿名函数, 该函数包含在Grouping运算符()中。
  • 第二部分创建IIFE, JavaScript引擎将通过该IIFE直接解释该函数。
单击此链接ES6 IIFE, 你可以了解有关箭头功能的更多信息。
例子
(function() { console.log("Hello World"); })();

输出
Hello World

15)讨论for … in循环。
它类似于循环遍历对象属性的for循环。当我们需要访问对象的属性或键时, 这很有用。
例子
function Mobile(model_no){this.Model = model_no; this.Color = 'White'; this.RAM = '4GB'; }var Samsung = new Mobile("Galaxy"); for(var props in Samsung){console.log(props+ " : " +Samsung[props]); }

输出
Model: GalaxyColor:WhiteRAM: 4GB

16)讨论for … of循环。
此循环用于迭代可迭代对象(数组, 字符串等)。
例子
var fruits = ['Apple', 'Banana', 'Mango', 'Orange']; for(let value of fruits){console.log(value); }

输出
AppleBananaMangoOrange

17)定义集合。
集合是一种数据结构, 可让我们创建唯一值的集合。它是类似于数组的值的集合, 但不包含任何重复项。它支持对象引用和原始值。
要了解有关ES6中的集合的更多信息, 请单击此链接ES6集合。
例子
let colors = new Set(['Green', 'Red', 'Orange', 'Yellow', 'Red']); console.log(colors);

输出
Set { 'Green', 'Red', 'Orange', 'Yellow' }

18)定义地图。
在ES6之前, 当我们需要键和值的映射时, 我们经常使用一个对象。 Map对象是ES6中引入的新集合类型。它包含键-值对, 在其中可以将任何类型的值用作键或值。
映射对象始终记住键的实际插入顺序。映射是有序的, 因此它们按其插入顺序遍历元素。
要了解有关ES6中地图的更多信息, 请点击此链接ES6地图。
19)你对Weakset有什么了解?
使用弱集, 可以将弱保存的对象存储在集合中。与set类似, weakset无法存储重复值。弱集不能迭代。
弱集仅包含set对象的add(value), delete(value)和has(value)方法。
20)你对Weakmap了解什么?
弱映射几乎与映射相似, 但是弱映射中的键必须是对象。它将每个元素存储为键-值对, 其中键被弱引用。这里, 键是对象, 值是任意的。
弱映射对象按其插入顺序迭代元素。它仅包括delete(key), get(key), has(key)和set(key, value)方法。
21)解释ES6中的承诺。
ES6 Promise是使用JavaScript进行异步编程的最简单方法。异步编程包括从主线程单独运行进程, 并在完成后通知主线程。
在ES6之前, 使用回调来执行异步编程。使用承诺来克服回调地狱的问题。
要了解有关承诺的更多信息, 请单击以下链接:ES6承诺。
22)ES6中承诺的状态是什么?
承诺主要有以下三种状态:
  • 待定:这是每个承诺的初始状态。它表示结果尚未计算。
  • 已完成:表示操作已完成。
  • 已拒绝:表示计算期间发生的故障。
一旦诺言被兑现或兑现, 那么它将是不可变的。 Promise()构造函数接受两个参数, 分别为拒绝函数和解析函数。基于异步操作, 它返回第一个参数或第二个参数。
23)你对JavaScript中的Callback和Callback hell有什么了解?
回调:用于在另一个函数执行完成之后处理函数的执行。回调将有助于处理事件。在回调中, 一个函数可以作为参数传递给另一个函数。当我们处理诸如最少的异步操作之类的基本情况时, 这是一个好方法。
回调地狱:当我们开发包含很多代码的Web应用程序时, 使用回调是很麻烦的。这种过多的回调嵌套通常称为” 回调地狱” 。
24)列出ES5和ES6之间的比较。
ES5和ES6在本质上相似, 但是它们之间存在一些差异。 ES5和ES6之间的比较列表如下:
基于 ES5 ES6
ES5是ECMAScript(由ECMA International定义的商标脚本语言规范)的第五版。 ES6是ECMAScript(ECMA International定义的商标脚本语言规范)的第六版。
它于2009年推出。 它于2015年推出。
ES5支持原始数据类型, 包括字符串, 布尔值, 数字, 空值和未定义。 在ES6中, 对JavaScript数据类型进行了一些补充。它引入了一种新的原始数据类型’ symbol’ 以支持唯一值。
在ES5中, 我们只能使用var关键字定义变量。 在ES6中, 有两种定义let和const变量的新方法。
由于ES5早于ES6, 因此某些功能不存在, 因此其性能比ES6低。 由于具有新功能和简化存储的实现, ES6具有比ES5更高的性能。
许多社区都支持它。 它也有很多社区支持, 但是比ES5小。
ES5比ES6耗时。 由于具有破坏性和速度运算符, 因此可以在ES6中更平稳地处理对象操纵。
在ES5中, function和return关键字均用于定义函数。 箭头功能是ES6中引入的新功能, 通过它我们不需要function关键字来定义功能。
在ES5中, 使用了for循环来遍历元素。 ES6引入了for … of循环的概念, 以对可迭代对象的值执行迭代。
要了解有关ES5和ES6之间差异的更多信息, 请访问以下链接:ES5 v / s ES6
25)在JavaScript中定义模块。
模块是写在文件中的一段JavaScript代码。通过使用模块, 可以轻松维护代码, 调试代码和重用代码。每个模块都是一段代码, 一旦加载, 便会执行。
26)你对JavaScript提升一词有什么了解?
这是JavaScript的默认行为, 用于在执行代码之前将所有声明移到作用域的顶部。它既可以应用于函数, 也可以应用于变量。它允许JavaScript在声明组件之前使用组件。它不适用于以严格模式运行的脚本。
27)列出ES6中引入的新数组方法?
ES6中有许多可用的数组方法, 如下所示:
  • Array.of()
  • Array.from()
  • Array.prototype.copyWithin()
  • Array.prototype.find()
  • Array.prototype.findIndex()
  • Array.prototype.entries()
  • Array.prototype.keys()
  • Array.prototype.values()
  • Array.prototype.fill()
要了解有关上述数组方法的更多信息, 请单击以下链接:ES6数组方法。
28)ES6中引入了哪些新的String方法?
ES6中引入了四种字符串方法, 分别列出如下:
  • string.startsWith()
  • string.endsWith()
  • string.includes()
  • string.repeat()
要了解有关字符串的更多信息, 请单击以下链接:ES6字符串。
29)定义通天塔。
Babel是流行的JavaScript编译器之一。它主要用于将ES6 plus代码转换为可以由以前的JavaScript引擎运行的JavaScript的向后兼容版本。
30)定义Webpack。
这是一个开放源代码的JavaScript模块捆绑程序, 用于处理具有依赖性的模块。它使我们可以运行托管Babel的环境。
工作/人力资源面试问题
JavaScript面试问题
Java OOP面试问题
JSP面试问题
休眠面试问题
SQL面试题
Android面试题
MySQL面试问题
定义
发布
资料类型
定义变量
性能
支持
对象操纵
箭头功能
循环
面试技巧
公司面试问题与程序
Java基础面试问题
Servlet面试问题
春季面试问题
PL / SQL面试问题
Oracle面试问题
【最新ES6面试题及答案汇总整理】jQuery面试问题

    推荐阅读