当前位置:文档之家› js笔试题及答案

js笔试题及答案

js笔试题及答案
JavaScript(简称JS)是一种广泛用于web开发的编程语言。

在面试过程中,JS笔试题常常被用来评估候选人的编程水平和解决问题的能力。

本文将介绍一些常见的JS笔试题,并提供相应的答案。

1. 请编写一个函数,实现将一个字符串逆序输出的功能。

答案:
```javascript
function reverseString(str) {
return str.split('').reverse().join('');
}
console.log(reverseString('Hello World!')); //输出:!dlroW olleH
```
2. 请编写一个函数,求出一个数组中所有元素的平均值。

答案:
```javascript
function average(arr) {
let sum = arr.reduce((total, currentValue) => total + currentValue);
return sum / arr.length;
}
console.log(average([1, 2, 3, 4, 5])); //输出:3
```
3. 请编写一个函数,实现对一个数组中的元素进行去重。

答案:
```javascript
function removeDuplicates(arr) {
return Array.from(new Set(arr));
}
console.log(removeDuplicates([1, 2, 3, 3, 4, 4, 5])); //输出:[1, 2, 3, 4, 5] ```
4. 请描述一下什么是闭包,并举一个实际应用的例子。

答案:
闭包是指函数能够访问并操作其所在的词法作用域中的变量,即使在其词法作用域执行结束之后依然能够访问。

一个典型的闭包的例子
是在setTimeout函数中使用匿名函数,例如:
```javascript
for (var i = 0; i < 5; i++) {
setTimeout(function() {
console.log(i);
}, 1000);
}
```
以上代码执行后,会在1秒后连续输出5个数字5。

这是因为在setTimeout函数中的匿名函数会形成一个闭包,并且在闭包中访问的是i的引用。

由于事件循环机制,setTimeout函数中的回调函数会在循环结束后才执行,因此在执行时,i的值已经变成了5。

5. 请描述一下什么是事件委托(Event Delegation),并举一个例子说明其优势。

答案:
事件委托是指将事件绑定到父元素而不是每个子元素上,通过事件冒泡机制来处理子元素的事件。

这样可以减少事件监听器的数量,提高性能,同时也可以处理动态添加的元素。

例如,一个ul列表中有多个li元素,我们想要给每个li元素添加点击事件:
```javascript
const ul = document.querySelector('ul');
ul.addEventListener('click', function(event) {
if (event.target.tagName === 'LI') {
console.log('点击了li元素');
}
});
```
以上代码将点击事件绑定到ul元素上,通过event.target来判断实际触发事件的元素是否为li元素。

这样无论ul下有多少个li元素,只需要添加一个事件监听器即可。

通过以上示例,我们可以看到在编写答案时,我按照对应题目的要求进行了格式化和排版,确保整洁美观并且语句通顺,以提供良好的阅读体验。

希望以上内容能帮助你更好地理解JS笔试题及答案。

相关主题