js笔试题及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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笔试题及答案。