首页 > 其他分享 >2024-04-19 前端常见面试题汇总(js篇)

2024-04-19 前端常见面试题汇总(js篇)

时间:2024-04-19 15:34:42浏览次数:24  
标签:面试题 JavaScript 函数 04 19 元素 对象 事件 监听器

以下是前端面试中关于JavaScript的一些常见问题及其答案,共包含超过50个问题:

1. 解释一下JavaScript中的变量提升(Hoisting)。
变量提升是指在JavaScript中,变量和函数的声明会被提升到其所在作用域的最顶部。但需要注意,只有声明会被提升,赋值操作不会。

2. 解释一下JavaScript中的闭包(Closure)。
闭包是JavaScript中一个重要的概念,它指的是一个函数可以访问并操作其外部词法环境(lexical environment)的变量。闭包允许数据在函数之间保持私有和独立。

3. JavaScript中的this关键字是如何工作的?
this关键字在JavaScript中的值取决于函数的调用方式。在全局上下文中,this通常指向全局对象(在浏览器中是window)。在对象的方法中,this指向调用该方法的对象。在构造函数中,this指向新创建的对象实例。在事件监听器中,this通常指向触发事件的元素。

4. 解释一下JavaScript中的原型链(Prototype Chain)。
原型链是JavaScript中对象继承属性的机制。每个对象都有一个指向它的原型(prototype)对象的内部链接。当试图访问一个对象的属性时,如果对象本身没有这个属性,那么JavaScript就会在该对象的原型上查找这个属性,以此类推,直到找到属性或到达原型链的末尾(通常是null)。

5. 描述一下JavaScript中的异步编程。
JavaScript中的异步编程是指那些不会立即返回结果,而是在未来某个时间点完成执行的代码。常见的异步编程模式包括回调函数、Promise、async/await等。

6. 什么是回调函数(Callback Function)?
回调函数是一个作为参数传递给其他函数的函数。当某个特定事件发生时(如异步操作完成),回调函数会被调用。

7. Promise是什么?它如何解决回调函数的问题?
Promise是JavaScript中用于处理异步操作的对象。它代表了一个可能现在、将来或永远不会完成的操作及其结果值。Promise解决了回调函数嵌套过深导致的“回调地狱”问题,通过链式调用的方式使异步代码更易于阅读和理解。

8. 解释一下async/await是如何工作的。
async/await是基于Promise的语法糖,用于简化异步代码的编写和理解。async函数返回一个Promise对象,而await关键字只能在async函数内部使用,用于等待一个Promise对象解析完成并返回其结果。

9. JavaScript中的数据类型有哪些?
JavaScript中的数据类型包括Number、String、Boolean、Null、Undefined、Object(包括数组和函数)以及Symbol(ES6新增)。

10. 如何检测一个变量是数组还是对象?
可以使用Array.isArray()方法检测一个变量是否为数组,对于对象,可以使用typeof操作符结合其返回值是否为“object”来判断(但需要注意nulltypeof结果也是“object”,因此还需要排除null)。

11. 什么是严格模式(Strict Mode)?它有什么作用?
严格模式是JavaScript中的一种运行模式,可以通过在脚本或函数的开头添加"use strict";来启用。它可以帮助捕获一些常见的编码错误,如使用未声明的变量、删除不可删除的属性等,并提供更安全的执行环境。

12. 如何实现一个JavaScript数组的去重?
可以使用Set数据结构来实现数组的去重,因为Set只存储唯一值。也可以使用filter方法结合indexOf方法来实现去重。

13. JavaScript中的事件冒泡和事件捕获是什么?
事件冒泡是指事件从最深的嵌套元素(触发事件的元素)开始,然后逐级向上传播到较不特定的节点(文档)。事件捕获则相反,事件从最不精确的节点(文档)开始触发,然后逐级向下传播到最精确的节点(触发事件的元素)。

14. 解释一下JavaScript中的DOM操作。
DOM(文档对象模型)是HTML和XML文档的编程接口,它提供了对文档的结构化表示,并定义了一种方式可以使程序和脚本能够动态地访问和更新文档的内容、结构和样式。JavaScript可以通过DOM API来创建、修改、删除、查询和遍历HTML文档中的元素和节点。

15. 什么是AJAX?它如何工作?
AJAX(Asynchronous JavaScript and XML)是一种创建交互式网页应用的网页开发技术。它使用多种技术,包括HTML或XHTML用于标记语言,CSS用于样式表示,DOM用于交互和动态显示,以及JavaScript绑定所有这些技术。通过AJAX,可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容。

16. 解释一下JavaScript中的事件委托(Event Delegation)。

事件委托(Event Delegation)是JavaScript中一种处理事件的技术,它依赖于事件冒泡机制。事件冒泡是指当一个事件在DOM中触发时,它会从触发该事件的元素(最具体的元素)开始,然后冒泡到其父元素,再到祖父元素,以此类推,直到到达DOM树的根节点(通常是document对象)。

事件委托的核心思想是:不直接在目标元素上设置事件监听器,而是在其父元素或祖先元素上设置监听器,然后利用事件冒泡机制来捕获和处理事件。这样做的好处主要有以下几点:

  1. 减少内存占用:不需要为每一个子元素单独绑定事件监听器,只需在父元素或祖先元素上绑定一个即可。这在处理大量动态添加或删除的子元素时特别有用,因为不需要每次添加或删除子元素时都重新绑定事件监听器。

  2. 简化代码:通过事件委托,可以使用更少的代码来处理多个元素的事件。

  3. 处理未来元素:即使在未来动态添加到DOM中的新元素,也会自动获得事件处理的能力,因为它们的事件也会冒泡到父元素或祖先元素。

使用事件委托的基本步骤是:

  1. 选择一个父元素或祖先元素作为事件监听器的目标。

  2. 在该元素上添加一个事件监听器。

  3. 在事件处理函数中,通过检查event.targetevent.srcElement属性来确定实际触发事件的元素,并执行相应的操作。

代码示例:

// 选择父元素作为事件监听器的目标  
document.querySelector('#parent-element').addEventListener('click', function(event) {  
    // 检查触发事件的元素是否是按钮  
    if (event.target.matches('button')) {  
        // 执行按钮点击事件的逻辑  
        alert('Button clicked!');  
    }  
});

 

标签:面试题,JavaScript,函数,04,19,元素,对象,事件,监听器
From: https://www.cnblogs.com/iuniko/p/18145981

相关文章

  • 2024-04-19 前端常见面试题汇总(html篇)
    1、xhtml和html有什么区别?语法要求:XHTML要求严格的XML语法,例如所有标签必须小写,所有标签必须关闭(即使是空元素也要使用闭合标签),所有属性必须使用引号。HTML语法相对更宽松,不强制要求标签闭合,标签和属性的大小写不敏感。文件类型:XHTML文档必须以.xml、.xhtml或者.xhtml......
  • 196. 删除重复的电子邮箱【Problem:Every derived table must have its own alias】
    SQL-Boy上线,最近在写SQL语句遇到了这样的问题。Problem:Everyderivedtablemusthaveitsownalias错误语句如下deletefromPersonwhereidnotin(selectidfrom(selectmin(id)asidfromPersongroupbyemail)......
  • Ubuntu22.04安装MySQL8
    Ubuntu22.04安装MySQL8第一部分:安装mysql使用apt安装sudoaptupdatesudoaptinstall-ymysql-server安装完成之后自动结束,不需要输入密码。更新用户密码这里默认安装的是mysql8.0版本,因为i没有输入密码;所以无法使用mysql-uroot-p进入mysql,需要执行这个命令(一定要......
  • Ubuntu22.04安装PostgreSQL15
    Ubuntu22.04安装PostgreSQL15启用PostgreSQL包存储库sudosh-c'echo"debhttp://apt.postgresql.org/pub/repos/apt$(lsb_release-cs)-pgdgmain">/etc/apt/sources.list.d/pgdg.list'wget-qO-https://www.postgresql.org/media/keys/ACCC4CF8......
  • 洛谷题单指南-动态规划1-P1049 [NOIP2001 普及组] 装箱问题
    原题链接:https://www.luogu.com.cn/problem/P1049题意解读:装尽可能多的物品,使得总体积越大越好,即剩余空间最小,还是一个01背包问题,物品的体积就是其价值。解题思路:01背包模版题,物品体积、价值相同,直接采用一维dp。100分代码:#include<bits/stdc++.h>usingnamespacestd;co......
  • ORA-19599 When Backing up an Archivelog that is Corrupt
    前几天遇到了一起备份失败案例,RMAN备份过程中遇到了归档日志损坏的情况,还是第一次遇到这种案例,这里记录一下这个案例的具体情况。备份作业失败,检查RMAN备份的输出日志,发现一个归档日志文件损坏(corrupt)了,如下所示:RMAN-08137: warning: archived log not deleted, needed f......
  • 【2024-04-17】80后的人
    20:00处处是创造之地,天天是创造之时,人人是创造之人。                                                 ——陶行知今天跟两个同事一起外勤做新客户的销前工作,路上聊了......
  • 【2024-04-18】连岳摘抄
    23:59在世上人人都应该首先爱生活。爱生活胜于爱生活的意义,一定得这样。                                                 ——陀思妥耶夫斯基每个阶段,婚姻的目标不......
  • PKUSC2019 D1T1 题解
    前言五一网课的例题,但是网上没有详细的题解(其实就是都没放代码),所以来写一篇。题目可以在这里提交。题目简述有\(n\)(\(n\leq5\times10^5\))个村庄排成一排,每个村庄里有一个人。第\(i\)个村庄里的人要去第\(p_i\)个村庄,且\(p\)是\(1\simn\)的一个排列。他们出行......
  • 20240418-这事我能吹一年/鱼梓酱你真是三班背刺王
    哈哈哈哈今天下午体考我tm满了!!!哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈......