14万字 | 400多道JavaScript 面试题及详细答案10(建议收藏)

简介: 14万字 | 400多道JavaScript 面试题及详细答案10(建议收藏)


218.get 和defineProperty 有什么区别?


除非您使用类,否则两者都有相似的结果。如果您使用get该属性将在对象的原型上定义,而使用Object.defineProperty()该属性将在它应用到的实例上定义。



219.Getter 和 Setter 的优点是什么?


以下是 Getter 和 Setter 的好处列表,


1.它们提供更简单的语法

2.它们用于定义计算属性或 JS 中的访问器。

3.用于提供属性和方法之间的等价关系

4.他们可以提供更好的数据质量

5.对于使用封装的逻辑在幕后做事很有用。



220.我可以使用defineProperty方法添加 getter 和 setter 吗?


是的,您可以使用该Object.defineProperty()方法添加 Getter 和 Setter。例如,下面的计数器对象使用递增、递减、加减属性,


var obj = {counter : 0};
 // Define getters
 Object.defineProperty(obj, "increment", {
   get : function () {this.counter++;}
 });
 Object.defineProperty(obj, "decrement", {
   get : function () {this.counter--;}
 });
 // Define setters
 Object.defineProperty(obj, "add", {
   set : function (value) {this.counter += value;}
 });
 Object.defineProperty(obj, "subtract", {
   set : function (value) {this.counter -= value;}
 });
 obj.add = 10;
 obj.subtract = 5;
 console.log(obj.increment); //6
 console.log(obj.decrement); //5



221.switch-case 的目的是什么?


JavaScript 中的 switch case 语句用于决策目的。在某些情况下,使用 switch case 语句会比 if-else 语句更方便。语法如下,


switch (expression)
 {
     case value1:
         statement1;
         break;
     case value2:
         statement2;
         break;
     .
     .
     case valueN:
         statementN;
         break;
     default:
         statementDefault;
 }


上面的多路分支语句提供了一种简单的方法,可以根据表达式的值将执行分派到代码的不同部分。



222.使用 swtich case 需要遵循什么规定?


以下是应注意的规定列表,


1.表达式可以是数字或字符串类型。

2.表达式不允许重复值。

3.默认语句是可选的。如果传递给 switch 的表达式与任何 case 值都不匹配,则将执行 default case 中的语句。

4.break 语句在 switch 中用于终止语句序列。

5.break 语句是可选的。但如果省略,执行将继续到下一个案例。



223.什么是原始数据类型?


原始数据类型是具有原始值(没有属性或方法)的数据。有 7 种原始数据类型。


1.string

2.number

3.boolean

4.null

5.undefined

6.bigint

7.symbol



224.访问对象属性的不同方式有哪些?


有 3 种可能的方法来访问对象的属性。


点符号:它使用点来访问属性


objectName.property

1

方括号表示法:它使用方括号进行属性访问


objectName["property"]

1

表达式符号:它使用方括号中的表达式


objectName[expression]

1


225.什么是函数参数规则?


JavaScript 函数遵循以下参数规则,


1.函数定义不指定参数的数据类型。

2.不要对传递的参数执行类型检查。

3.不要检查收到的参数数量。即,以下函数遵循上述规则,


function functionName(parameter1, parameter2, parameter3) {

  console.log(parameter1); // 1

}

functionName(1);



226.什么是错误对象?


错误对象是一个内置的错误对象,它在发生错误时提供错误信息。它有两个属性:名称和消息。例如,以下函数记录错误详细信息,


try {

  greeting("Welcome");

}

catch(err) {

  console.log(err.name + "<br>" + err.message);

}



227.当你收到语法错误时


如果您尝试评估具有语法错误的代码,则会引发 SyntaxError。例如,下面缺少的函数参数引用会引发语法错误


try {

  eval("greeting('welcome)");   // Missing ' will produce an error

}

catch(err) {

  console.log(err.name);

}



228.错误对象有哪些不同的错误名称?


错误对象返回了 6 种不同类型的错误名称,


错误名称 说明

EvalError eval() 函数发生错误

RangeError 数字“超出范围”发生错误

ReferenceError 由于非法引用而导致的错误

SyntaxError 语法错误导致的错误

TypeError 类型错误导致的错误

URIError  


229.错误处理中的各种语句是什么?


以下是错误处理中使用的语句列表,


1.try:该语句用于测试代码块是否有错误

2.catch:该语句用于处理错误

3.throw:此语句用于创建自定义错误。

4.finally:该语句用于在 try 和 catch 之后执行代码,而不管结果如何。



230.javascript中的两种类型的循环是什么?


1.进入Controlled Loops受控循环:在这种循环类型中,在进入循环体之前测试测试条件。例如,For 循环和 While 循环就属于这一类。


2.退出 Controlled Loops:在这种循环类型中,测试条件在循环体的末尾进行测试或评估。即,无论测试条件为真还是假,循环体都将至少执行一次。例如,do-while 循环就属于这一类。




231.什么是 nodejs?


Node.js 是一个基于 Chrome 的 JavaScript 运行时构建的服务器端平台,用于轻松构建快速且可扩展的网络应用程序。它是一个基于事件的、非阻塞的、异步的 I/O 运行时,使用谷歌的 V8 JavaScript 引擎和 libuv 库。




232.什么是 Intl 对象?


Intl 对象是 ECMAScript 国际化 API 的命名空间,它提供语言敏感的字符串比较、数字格式以及日期和时间格式。它提供对几个构造函数和语言敏感函数的访问。



233.你如何执行特定于语言的日期和时间格式化?


您可以使用Intl.DateTimeFormat对象,它是启用语言敏感日期和时间格式的对象的构造函数。让我们用一个例子来看看这个行为,


var date = new Date(Date.UTC(2019, 07, 07, 3, 0, 0));

console.log(new Intl.DateTimeFormat('en-GB').format(date)); // 07/08/2019

console.log(new Intl.DateTimeFormat('en-AU').format(date)); // 07/08/2019



234.什么是迭代器?


迭代器是一个对象,它在终止时定义一个序列和一个返回值。它使用一个next()方法实现迭代器协议,该方法返回一个具有两个属性的对象:(value序列中的下一个值)和done(如果序列中的最后一个值已被消耗,则为真)。



235.同步迭代是如何工作的?


ES6 中引入了同步迭代,它适用于以下组件集,


Iterable:它是一个可以通过其键为 Symbol.iterator 的方法迭代的对象。

迭代器:它是通过调用[Symbol.iterator]()可迭代对象返回的对象。这个迭代器对象将每个迭代的元素包装在一个对象中,并通过next()方法一一返回。

IteratorResult:next()方法返回的对象。该对象包含两个属性;该value属性包含一个迭代元素,该done属性确定该元素是否是最后一个元素。


让我们用下面的数组演示同步迭代,


const iterable = ['one', 'two', 'three'];
 const iterator = iterable[Symbol.iterator]();
 console.log(iterator.next());  // { value: 'one', done: false }
 console.log(iterator.next());  // { value: 'two', done: false }
 console.log(iterator.next());  // { value: 'three', done: false }
 console.log(iterator.next());  // { value: 'undefined, done: true }



236.什么是事件循环?


事件循环是一个回调函数队列。当异步函数执行时,回调函数被推入队列。JavaScript 引擎在异步函数执行完代码之前不会开始处理事件循环。


注意:即使 JavaScript 是单线程的,它也允许 Node.js 执行非阻塞 I/O 操作。


237.什么是调用栈?


调用堆栈是 javascript 解释器的一种数据结构,用于跟踪程序中的函数调用。它有两个主要动作,


1.每当你调用一个函数来执行它时,你就是在将它压入堆栈。

2.每当执行完成时,函数就会从堆栈中弹出。


让我们举个例子,它是图表格式的状态表示


function hungry() {
    eatFruits();
 }
 function eatFruits() {
    return "I'm eating fruits";
 }
 // Invoke the `hungry` function
 hungry();


上面的代码在调用堆栈中处理如下,


1.将hungry()函数添加到调用堆栈列表并执行代码。

2.将eatFruits()函数添加到调用堆栈列表并执行代码。

3.eatFruits()从我们的调用堆栈列表中删除该函数。

4.hungry()从调用堆栈列表中删除该函数,因为不再有项目。





238.什么是事件队列?


对消息或事件的发送与处理进行时间上的解耦。通俗地讲就是在队列中按先入先出的顺序存储一系列通知或请求。 发送通知时,将请求放入队列并返回。 处理请求的系统之后稍晚从队列中获取请求并处理。


返回顶部

回到第100题

回到第200题


239.什么是装饰器?


装饰器是一个表达式,其计算结果为函数,并将目标、名称和装饰器描述符作为参数。此外,它还可以选择返回一个装饰器描述符以安装在目标对象上。让我们在设计时为用户类定义管理装饰器,


function admin(isAdmin) {
    return function(target) {
        target.isAdmin = isAdmin;
    }
 }
 @admin(true)
 class User() {
 }
 console.log(User.isAdmin); //true
  @admin(false)
  class User() {
  }
  console.log(User.isAdmin); //false


目录
相关文章
|
3月前
|
JSON JavaScript 前端开发
Javascript基础 86个面试题汇总 (附答案)
该文章汇总了JavaScript的基础面试题及其答案,涵盖了JavaScript的核心概念、特性以及常见的面试问题。
63 3
|
3月前
|
前端开发 JavaScript
JavaScript 面试系列:如何理解 ES6 中 Generator ?常用使用场景有哪些?
JavaScript 面试系列:如何理解 ES6 中 Generator ?常用使用场景有哪些?
|
4月前
|
JavaScript 前端开发
常见的JS面试题
【8月更文挑战第5天】 常见的JS面试题
62 3
|
1月前
|
JSON JavaScript 前端开发
[JS]面试官:你的简历上写着熟悉jsonp,那你说说它的底层逻辑是怎样的?
本文介绍了JSONP的工作原理及其在解决跨域请求中的应用。首先解释了同源策略的概念,然后通过多个示例详细阐述了JSONP如何通过动态解释服务端返回的JavaScript脚本来实现跨域数据交互。文章还探讨了使用jQuery的`$.ajax`方法封装JSONP请求的方式,并提供了具体的代码示例。最后,通过一个更复杂的示例展示了如何处理JSON格式的响应数据。
35 2
[JS]面试官:你的简历上写着熟悉jsonp,那你说说它的底层逻辑是怎样的?
|
2月前
|
Web App开发 JavaScript 前端开发
前端Node.js面试题
前端Node.js面试题
|
4月前
|
存储 JavaScript 前端开发
2022年前端js面试题
2022年前端js面试题
45 0
|
4月前
|
JavaScript 前端开发 程序员
JS小白请看!一招让你的面试成功率大大提高——规范代码
JS小白请看!一招让你的面试成功率大大提高——规范代码
|
4月前
|
存储 JavaScript 前端开发
JS浅拷贝及面试时手写源码
JS浅拷贝及面试时手写源码
|
4月前
|
JavaScript 前端开发
JS:类型转换(四)从底层逻辑让你搞懂经典面试问题 [ ] == ![ ] ?
JS:类型转换(四)从底层逻辑让你搞懂经典面试问题 [ ] == ![ ] ?
|
5月前
|
缓存 JavaScript 前端开发
js高频面试题,整理好咯
中级前端面试题,不低于12k,整理的是js较高频知识点,可能不够完善,大家有兴趣可以留言补充,我会逐步完善,若发现哪里有错,还请多多斧正。