JavaScript常见面试题(二)

文章目录

  • 1.new操作符的实现原理
  • 2.map和Object的区别
  • 3.JavaScript脚本延迟加载的方式有哪些?
  • 4.JavaScript 类数组对象的定义?(伪数组)
  • 5. 数组有哪些原生方法?
  • 6.为什么函数的 arguments 参数是类数组而不是数组?如何遍历类数组?
  • 7.什么是 DOM 和 BOM?
  • 8.对AJAX的理解,实现一个AJAX请求
  • 9. JavaScript为什么要进行变量提升,它导致了什么问题?

1.new操作符的实现原理

  • 首先创建一个空对象{}。
  • 然后将空对象的原型设置为函数的prototype对象。
  • 让函数this指向这个对象,为对象添加属性。
  • 最后返回这个对象

2.map和Object的区别

都是用来存储键值对的集合
不同点

  • map键可以是任意的类型,而object的键只能是String或者Symbol。
  • map键是有序的,会按照键的顺序返回键值,Object键的顺序是无序的。
  • map的键值对size可以直接通过size获取,而Object只能手动计算(Object.keys())。
  • map是可以直接迭代的,而Object需要先获取键的数组,然后再进行迭代。

3.JavaScript脚本延迟加载的方式有哪些?

等页面加载完成以后再加载JavaScript文件。

  • 给script标签添加defer属性,脚本会在文档解析完成后执行。
  • 给script标签添加async属性。
  • 把JavaScript文件放在页面底部,让HTML和CSS先加载。

4.JavaScript 类数组对象的定义?(伪数组)

与数组对象类似(有索引和长度),但是不能调用数组的方法(pop,push)。

  • 常见的伪数组:arguements(保存了函数调用的参数),获取到的DOM元素集合(document.querySelector),字符串。
  • 将伪数组转化为数组的方法:[].slice.call();Array.prototype.slice.call() ,Array.from(),扩展运算符…

5. 数组有哪些原生方法?

  • toString():将数组转化为字符串
  • join():将数组通过指定字符串进行连接
  • push(向数组末尾添加元素),pop(移除数组的最后一个元素),unshift(数组头部添加),shift(移除数组的第一个元素)
  • indexOf(返回数组第一个匹配到的索引,找不到返回-1) lastIndexOf(最后匹配的索引)
  • slice(截取数组中的一部分) splice(数组中删除,替换)
  • 遍历(forEach,map,every是否所有元素复合条件,some是否存在元素符合条件)

6.为什么函数的 arguments 参数是类数组而不是数组?如何遍历类数组?

arguement是一个对象,有索引,长度等属性。

  • 遍历:可以先转化为数组再进行遍历(方法如上)

7.什么是 DOM 和 BOM?

  • DOM树主要由4类主要节点组成:文档节点,元素节点,属性节点,文本节点。
  • BOM 指的是浏览器对象模型,它指的是把浏览器当做一个对象来对待,这个对象主要定义了与浏览器进行交互的法和接口。BOM的核心是window,而 window 对象具有双重角色,它既是通过 js 访问浏览器窗口的一个接口,又是一个 Global(全局)对象。
    在这里插入图片描述

在这里插入图片描述

8.对AJAX的理解,实现一个AJAX请求

  • AJAX是 Asynchronous JavaScript and XML 的缩写,指通过JavaScript 的 异步通信,从服务器获取数据来更新页面,不用刷新整个页面

实现ajax的步骤

  • 首先创建一个XMLHttpRequest 对象。
  • 使用这个对象的open方法创建一个http请求(可以设置请求的类型和url),也可以添加请求头等信息。然后使用onreadystatechange属性指定一个回调函数,该函数在请求状态发生变化时调用。
  • 使用send()方法发送请求。对于GET请求,可以将请求参数附加到URL中;对于POST请求,可以将请求参数作为send()方法的参数传递。
  • 处理响应:通过检查readyState和status属性来确定请求的状态。readyState表示请求的当前状态,其中4表示请求已完成并且响应已就绪,status表示服务器返回的HTTP状态码,200表示请求成功。可以通过responseText或responseXML属性获取完整的响应数据。

9. JavaScript为什么要进行变量提升,它导致了什么问题?

变量提升表示无论函数中何处位置声明变量,变量都被提升到函数的最前面,这样就不会报错。

  • 目的:提高性能,通过将变量和函数的声明提前到作用域顶部,避免了在执行过程中重复解析和查找的开销。预先分配栈空间也提高了函数执行的效率容错性更好:变量提升使得可以在变量声明之前就使用它们,即使在代码书写上存在疏忽,也不会报错。这种容错性可以避免一些不规范的代码导致的问题。
  • 问题:可能导致在变量声明之前使用变量时出现undefined的情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/717838.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

成都跃享未来教育咨询解锁新篇章

在快节奏的现代社会中,每个人都在追求着属于自己的非凡人生。而成都跃享未来教育咨询,正是那个能够智慧引领你走向成功、成就非凡人生的灯塔。 跃享未来教育咨询,位于历史悠久的文化名城成都,这里不仅有丰富的文化底蕴&#xff0c…

【C++进阶学习】第二弹——继承(下)——挖掘继承深处的奥秘

继承(上):【C进阶学习】第一弹——继承(上)——探索代码复用的乐趣-CSDN博客 前言: 在前面我们已经讲了继承的基础知识,让大家了解了一下继承是什么,但那些都不是重点,今…

企业社会责任认证:提升品牌价值的关键

社会责任认证(Social Responsibility Certification)是现代企业在经营过程中主动履行社会责任、尊重人权、保护环境等方面所获得的认证。这不仅是企业管理的要求,更是企业赢得社会信任和支持的关键。 社会责任认证是企业在经营过程中&#xf…

nvm 报错https://npm.taobao.org/mirrors/node/index.json 淘宝镜像更换

文章目录 一、问题背景二、解决问题1. 获取配置文件的位置2. 修改配置文件中的镜像源配置3. 修改 npm 镜像源 一、问题背景 使用nvm的时候报错: Could not retrieve https://npm.taobao.org/mirrors/node/index.json. 由于淘宝的镜像域名更换,npm.taobao.org 域名…

基于WPF技术的换热站智能监控系统15--实时读取PLC数据

1、创建PLC实时数据 1、添加数据块 2、创建6个变量 用来表示水泵1和水泵2的参数,可以根据现场实际情况添加更多的变量参数 3、设置块属性并编译 4、下载该程序到PLC中 5、添加监控表 2、读取设备数据 S7协议下的tcp直接通讯,配置简单,一般P…

浏览器必装插件推荐:最新版Simple Allow Copy,解除网页复制限制!

经常在网上找资料的朋友,尤其是学生党,总会遇到一个问题:很多资料网站的文字是禁止复制的。于是大家通常会使用各种文字识别软件来图文转换,或者直接手打。 今天这款小工具,可以轻松复制各种氪金网站上的任何文字&…

李沐:用随机梯度下降来优化人生!

大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 今天我们来聊聊达叔 6 大核心算法之 —— 优化 算法。吴恩达:机器学习的六个核心算法! 梯度下降优化算法是机器…

【数据结构与算法 刷题系列】求带环链表的入环节点(图文详解)

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法 经典例题》C语言 期待您的关注 ​ 目录 一、问题描述 二、解题思路 方法一:数学公式推导法 方法…

Kaggle比赛:成人人口收入分类

拿到数据首先查看数据信息和描述 import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # 加载数据(保留原路径,但在实际应用中建议使用相对路径或环境变量) data pd.read_csv(r"C:\Users\11794\Desk…

超高清图像生成新SOTA!清华唐杰教授团队提出Inf-DiT:生成4096图像比UNet节省5倍内存。

清华大学唐杰教授团队最近在生成超高清图像方面的新工作:Inf-DiT,通过提出一种单向块注意力机制,能够在推理过程中自适应调整内存开销并处理全局依赖关系。基于此模块,该模型采用了 DiT 结构进行上采样,并开发了一种能…

持续学习的综述: 理论、方法与应用

摘要 为了应对现实世界的动态,智能系统需要在其整个生命周期中增量地获取、更新、积累和利用知识。这种能力被称为持续学习,为人工智能系统自适应发展提供了基础。从一般意义上讲,持续学习明显受到灾难性遗忘的限制,在这种情况下…

白酒:茅台镇白酒的酒厂社会责任与可持续发展

云仓酒庄豪迈白酒,作为茅台镇的品牌,不仅在产品品质和口感方面有着卓着的表现,在酒厂社会责任和可持续发展方面也做出了积极的探索和实践。 首先,云仓酒庄豪迈白酒注重环境保护和资源利用。酒厂在生产过程中严格控制能源消耗和排放…

使用 Nstbrowser 管理多个帐户 - 2024 年最佳反检测浏览器

每个人一定都看过那些房间里全是窃听器的老间谍电影,对吧?现在这些电影可能看起来有点好笑,但互联网并没有好到哪里去! 事实上,每个你打开的页面在你浏览时都在被监控!此外,当你管理多个账户时…

基于ChatGPT-4o自然科学研究全流程实践技术应用

自然科学研究遵循严谨的科学方法论,包括文献调研、问题综述、试验设计、提出假设、数据清洗、统计诊断、大数据分析、经典统计模型(回归模型、混合效应模型、结构方程模型、Meta分析模型)、参数优化、机器/深度学习、大尺度模型构建与模拟、论…

【AI开发】CRAG、Self-RAG、Adaptive-RAG

先放一张基础RAG的流程图 https://blog.langchain.dev/agentic-rag-with-langgraph/ 再放一个CRAG和self-RAG的LangChain官方博客 Corrective RAG(CRAG) 首先需要知道的是CRAG的特色发生在retrieval阶段的最后开始,即当我们获得到了近似的document(或者…

【proteus仿真】基于51单片机的电压检测系统

【proteus仿真】基于51单片机的电压检测系统 资料下载地址:关注公众号 小邵爱电子 获取 1.前言 使用51单片机和ADC模块设计一个数字电压表,将模拟信号0~5V之间的电压转换为数字量信号,并通过LED实时显示电压数据 、 2.仿真原理图 3.硬件…

简单几步把完整的Windows塞进U盘,小白都能看懂

前言 小白之前写过相似的文章,但教程是通过WinPE操作实现的。 把Windows系统装进U盘,从此到哪都有属于你自己的电脑系统 有些小伙伴反馈教程写得很复杂,简直生涩难懂。 为啥要写得这么复杂呢?小白是想让小伙伴们多了解一些不同…

为什么MOSFET是双向导通的

MOSFET 的电压控制机理是利用栅极电压的 大小改变感应电场生成的导电沟道的厚度(感生电荷的多少),来控制漏极电流 Id 的。从图1(b)中可 以看出,当栅极电压 V gs小于开启电压 V th时,无论 V ds的…

Android系统上Bootchart的使用

Android系统的启动细节分析,可以用工具bootchart来进行 一、Bootchart简介 官网地址:https://www.bootchart.org/ Google推荐bootchart作为开机优化的首选工具:https://source.android.com/devices/tech/perf/boot-times#bootchart bootc…

第三方软件测试报告包括哪些内容?如何获取专业第三方测试报告?

第三方软件测试报告是由独立的第三方公司进行软件测试后所生成的报告。该报告会清晰地呈现出软件在各个方面的测试结果和评估。通过第三方公司的专业测试,这些报告具有公正、中立和权威的特点。 一、第三方软件测试报告包括哪些内容? 1、功能测试:验证…