前端2023最新面试题推荐以及答案
<p>由于前端技术发展迅速,每年都会有新的面试题出现。以下是2023年最新的前端面试题推荐及答案:</p>
<ol>
<li>请解释一下什么是闭包,并且举个例子。</li>
</ol>
<p>答:闭包是指函数可以访问在其外部定义的变量,即使函数在其外部被调用。闭包可以用于实现私有变量和函数等。例如:</p>
<p>function outer() {
var count = 0;
function inner() {
count++;
console.log(count);
}
return inner;
}</p>
<p>var fn = outer();
fn(); // 输出 1
fn(); // 输出 2</p>
<ol start="2">
<li>请解释一下 JavaScript 中的 this 关键字,并举个例子。</li>
</ol>
<p>答:this 关键字在 JavaScript 中表示当前执行上下文的对象。this 的值取决于函数是如何被调用的。例如:</p>
<p>var obj = {
name: '小明',
sayName: function() {
console.log(this.name);
}
};</p>
<p>obj.sayName(); // 输出 小明</p>
<ol start="3">
<li>请解释一下什么是事件冒泡和事件捕获,并举个例子。</li>
</ol>
<p>答:事件冒泡和事件捕获是指浏览器处理事件时的两种不同方式。事件冒泡是指事件从最具体的元素开始向上传播,直到到达文档的根节点。事件捕获则是相反的,事件从文档的根节点开始,直到到达最具体的元素。例如:</p>
<div id="outer">
<div id="inner">
<button id="btn">点击</button>
</div>
</div>
<script>
var outer = document.getElementById('outer');
var inner = document.getElementById('inner');
var btn = document.getElementById('btn');
outer.addEventListener('click', function() {
console.log('outer clicked');
}, true); // 事件捕获
inner.addEventListener('click', function() {
console.log('inner clicked');
}, true); // 事件捕获
btn.addEventListener('click', function() {
console.log('button clicked');
}, true); // 事件捕获
</script>
<p>在这个例子中,如果点击按钮,会依次输出 "outer clicked"、"inner clicked" 和 "button clicked",因为事件是从文档的根节点开始向下传播的,然后再从最具体的元素向上传播的。</p>
<ol start="4">
<li>请解释一下什么是 AJAX,并举个例子。</li>
</ol>
<p>答:AJAX 是指使用 JavaScript 和 XML(或 JSON)来异步地向服务器发送请求和接收响应。这使得 Web 应用程序可以在不刷新页面的情况下更新页面内容。例如:</p>
<p>var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://api.github.com/users/octocat');
xhr.onload = function() {
if (xhr.status === 200) {
var data = JSON.parse(xhr.responseText);
console.log(data.name);
}
};
xhr.send();</p>
<p>这个例子中,我们使用 XMLHttpRequest 对象向 GitHub API 发送 GET 请求,并在收到响应后输出用户名。在这个过程中,页面不会被刷新。</p>
原文地址: https://www.cveoy.top/t/topic/ZD6 著作权归作者所有。请勿转载和采集!