文章图片
下面列出了一些常见的ES6面试问答。
1)什么是ES6或ECMAScript 2015?
ES6于2015年6月发布, 被称为该语言的第六版。最初, 它被命名为ES6, 后来被重命名为ECMAScript2015。该版本包括几个新功能, 包括模块, 迭代器, 类, 箭头函数, for … of循环, promise等。 Brendan Eich开发了它。
2)定义ECMAScript。
这是ECMA-262标准中定义的规范, 用于创建通用脚本语言。
3)ES6中引入了哪些新功能?
ES6中引入的新功能列出如下:
- 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语句对于单行函数是可选的。
- 词汇绑定上下文。
- 对于单行语句, 功能括号是可选的。
扩展算子由三个点(… )表示, 以获取参数列表。它允许在期望的参数超过零的地方扩展可迭代的数组或字符串。
扩展运算符的语法与其余运算符相似, 但功能完全相反。它也可用于组合或执行数组之间的串联。让我们通过一个例子来理解它。
例子
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直接解释该函数。
例子
(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中承诺的状态是什么?
承诺主要有以下三种状态:
- 待定:这是每个承诺的初始状态。它表示结果尚未计算。
- 已完成:表示操作已完成。
- 已拒绝:表示计算期间发生的故障。
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循环的概念, 以对可迭代对象的值执行迭代。 |
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()
28)ES6中引入了哪些新的String方法?
ES6中引入了四种字符串方法, 分别列出如下:
- string.startsWith()
- string.endsWith()
- string.includes()
- string.repeat()
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面试问题
推荐阅读
- 最新精品!Flutter面试题和答案合集
- 最新PowerShell面试题和答案汇总
- 最新React Native面试题和答案合集
- 打开App显示文件已损坏,打不开,您应该将它移到废纸篓,怎么办()
- 如何使用STM32F4的BootLoader和APP程序
- 基于appium的安卓自动化测试进阶篇
- 基于appium的安卓自动化测试初长成
- 基于appium的安卓自动化测试环境搭建
- Android studio Connection timed out: connect