三个JavaScript面试题

简介: 【5月更文挑战第7天】- 闭包是JavaScript函数能记住词法作用域,即使在外部执行。示例:计数器函数`createCounter()`返回访问`count`的匿名函数,每次调用计数递增。- 事件循环处理异步操作,通过检查任务队列执行回调。示例:`setTimeout`异步任务在3秒后添加到队列,待执行,输出顺序为同步任务1、2,然后异步任务1。- 箭头函数是ES6简洁的函数定义方式,如`greet = name => `Hello, ${name}!`。它没有自己的`this`,不适用作构造函数。

题目:请解释JavaScript中的闭包,并给出一个示例。
答案:闭包是JavaScript中的一个重要概念,它是指一个函数能够记住并访问其词法作用域,即使该函数在其词法作用域之外执行。一个常见的闭包示例是计数器函数,可以用来跟踪计数值。
示例:

javascript
function createCounter() {
let count = 0;
return function() {
count += 1;
return count;
};
}

const counter = createCounter();
console.log(counter()); // 1
console.log(counter()); // 2
console.log(counter()); // 3
在这个例子中,createCounter函数返回了一个匿名函数,这个匿名函数访问了createCounter的词法作用域,并修改了count变量的值。每次调用返回的函数时,计数器都会递增并返回新的计数值。这就是闭包的作用。

  1. 题目:请解释JavaScript中的事件循环机制,并给出一个简单的示例。
    答案:事件循环是JavaScript中处理异步操作的一种机制。它通过不断地检查任务队列来执行异步事件和回调函数。当一个异步事件完成时,它的回调函数会被添加到任务队列中等待执行。

示例:

javascript
console.log('开始'); // 同步任务1

setTimeout(() => {
console.log('延迟3秒后'); // 异步任务1,3秒后执行
}, 3000);

console.log('同步任务2'); // 同步任务2
在这个例子中,'开始'、'同步任务1'和'同步任务2'会按照顺序输出。然后,异步任务1的回调函数被添加到任务队列中等待执行。当JavaScript引擎空闲时,它会检查任务队列并执行异步任务1的回调函数,输出'延迟3秒后'。这就是事件循环的工作方式。

  1. 题目:请解释JavaScript中的箭头函数,并给出一个使用箭头函数的例子。
    答案:箭头函数是ES6引入的一种新的函数语法,它提供了一种更简洁的方式来定义函数。箭头函数有几个特点:没有自己的this值、没有arguments对象、不可以用作构造函数等。

示例:

javascript
// 箭头函数定义
const greet = name => Hello, ${name}!;

// 使用箭头函数调用
console.log(greet('John')); // 输出 "Hello, John!"
在这个例子中,箭头函数greet接受一个参数name,并返回一个字符串。箭头函数使得代码更加简洁,并且没有自己的this值,因此它不会覆盖外部作用域的this值。

相关文章
|
JSON JavaScript 前端开发
Javascript基础 86个面试题汇总 (附答案)
该文章汇总了JavaScript的基础面试题及其答案,涵盖了JavaScript的核心概念、特性以及常见的面试问题。
616 3
|
前端开发 JavaScript
JavaScript 面试系列:如何理解 ES6 中 Generator ?常用使用场景有哪些?
JavaScript 面试系列:如何理解 ES6 中 Generator ?常用使用场景有哪些?
|
10月前
|
自然语言处理 JavaScript 前端开发
当面试官再问我JS闭包时,我能答出来的都在这里了。
闭包(Closure)是前端面试中的高频考点,广泛应用于函数式编程中。它不仅指函数内部定义的函数,还涉及内存管理、作用域链和垃圾回收机制。闭包可以让函数访问其外部作用域的变量,但也可能引发内存泄漏等问题。通过合理使用闭包,可以实现模块化、高阶函数和回调函数等应用场景。然而,滥用闭包可能导致代码复杂度增加、调试困难以及潜在的性能问题。为了避免这些问题,开发时应谨慎处理闭包,避免不必要的嵌套,并及时清理不再使用的变量和监听器。
435 16
当面试官再问我JS闭包时,我能答出来的都在这里了。
|
JavaScript 前端开发
常见的JS面试题
【8月更文挑战第5天】 常见的JS面试题
223 3
|
存储 JavaScript 前端开发
2022年前端js面试题
2022年前端js面试题
479 156
|
Web App开发 JavaScript 前端开发
前端Node.js面试题
前端Node.js面试题
|
JavaScript 前端开发 程序员
JS小白请看!一招让你的面试成功率大大提高——规范代码
JS小白请看!一招让你的面试成功率大大提高——规范代码
|
存储 JavaScript 前端开发
JS浅拷贝及面试时手写源码
JS浅拷贝及面试时手写源码
|
JavaScript 前端开发
JS:类型转换(四)从底层逻辑让你搞懂经典面试问题 [ ] == ![ ] ?
JS:类型转换(四)从底层逻辑让你搞懂经典面试问题 [ ] == ![ ] ?
|
JavaScript
分享经典面试题:JS数组去重的多种方法
分享经典面试题:JS数组去重的多种方法