最新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 Function  
var mygen = gen();  
console.log(mygen.next().value);  
console.log(mygen.next().value);  
console.log(mygen.next().value);

输出

100
undefined
200

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: Galaxy
Color:  White
RAM: 4GB

16)讨论for … of循环。

此循环用于迭代可迭代对象(数组, 字符串等)。

例子

var fruits = ['Apple', 'Banana', 'Mango', 'Orange'];  
for(let value of fruits)  
{  
  console.log(value);   
}

输出

Apple
Banana
Mango
Orange

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面试问题

jQuery面试问题

来源:

https://www.srcmini02.com/33335.html

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?