绍兴做公司网站的公司/网络营销的成功案例分析
面试 JavaScript 框架八股文十问十答第五期
作者:程序员小白条,个人博客
相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!
⭐点赞⭐收藏⭐不迷路!⭐
1)常见的位运算符有哪些?其计算规则是什么?
- 位与(&):对两个数的每一位进行与操作,只有两个数对应位都为1时结果才为1。
- 位或(|):对两个数的每一位进行或操作,只要两个数对应位有一个为1时结果就为1。
- 位异或(^):对两个数的每一位进行异或操作,只有两个数对应位不相同时结果才为1。
- 位非(~):对一个数的每一位进行取反操作,0变为1,1变为0。
- 左移(<<):将一个数的每一位向左移动指定的位数,右边空出的位用0填充。
- 右移(>>):将一个数的每一位向右移动指定的位数,左边空出的位用原来的符号位填充。
- 无符号右移(>>>):将一个数的每一位向右移动指定的位数,左边空出的位用0填充。
2)为什么函数的 arguments 参数是类数组而不是数组?如何遍历类数组?
函数的 arguments 参数是类数组而不是数组是因为它是一个包含函数调用时传递给函数的参数的对象。它类似于数组,但并不是一个真正的数组,没有数组的一些方法和属性。遍历类数组可以使用传统的 for 循环或者将其转换为一个真正的数组后再使用数组的方法进行遍历。以下是两种常见的遍历方法示例:
// 使用 for 循环遍历类数组
function toArray() {for (var i = 0; i < arguments.length; i++) {console.log(arguments[i]);}
}// 将类数组转换为数组后使用数组的方法遍历
function toArray() {var arr = Array.from(arguments);arr.forEach(function(arg) {console.log(arg);});
}
3)什么是 DOM 和 BOM?
DOM(Document Object Model)是指文档对象模型,它是 HTML 和 XML 文档的编程接口,提供了对文档的结构化访问和操作。通过 DOM,可以使用 JavaScript 来操作文档中的元素、属性和样式,以及进行事件处理和动态更新。
BOM(Browser Object Model)是指浏览器对象模型,它是浏览器提供的一组 JavaScript API,用于操作浏览器窗口、历史记录、浏览器信息等。BOM 提供了许多对象,如 window、location、navigator、screen 等,用于与浏览器交互。BOM 并没有统一的标准,不同的浏览器可能提供不同的 BOM API。
4)对类数组对象的理解,如何转化为数组
类数组对象是指具有类似数组结构的对象,它们拥有类似数组的长度属性和通过索引访问元素的能力,但不具备数组的方法。常见的类数组对象包括函数的 arguments 对象和 DOM 元素集合(如通过 document.querySelectorAll() 返回的结果)。可以通过以下几种方法将类数组对象转化为数组:
- 使用 Array.from() 方法将类数组对象转化为真正的数组。
- 使用 Array.prototype.slice.call() 方法将类数组对象转化为真正的数组。
- 使用展开运算符(…)将类数组对象转化为真正的数组。
以下是示例代码:
function toArray() {var arr = Array.from(arguments);// 或者 var arr = Array.prototype.slice.call(arguments);// 或者 var arr = [...arguments];console.log(arr);
}
5)escape、encodeURI、encodeURIComponent 的区别
escape、encodeURI 和 encodeURIComponent 是用于编码 URL 的三个函数,它们之间的区别如下:
- escape:用于编码字符串,对除了字母、数字和指定的特殊字符以外的字符进行编码。它将字符串中的非 ASCII 字符转化为十六进制的转义序列,并且不会编码以下字符:@*/±
- encodeURI:用于编码整个 URL,对除了字母、数字和指定的特殊字符以外的字符进行编码。它将字符串中的非 ASCII 字符转化为 UTF-8 编码的转义序列,并且不会编码以下字符:!#$&'()*+,/:;=?@[]%
- encodeURIComponent:用于编码 URL 的参数部分,对除了字母、数字和指定的特殊字符以外的字符进行编码。它将字符串中的非 ASCII 字符转化为 UTF-8 编码的转义序列,并且会编码所有非字母数字字符。
6)对AJAX的理解,实现一个AJAX请求
AJAX(Asynchronous JavaScript and XML)是一种用于创建异步请求的技术。它允许网页通过 JavaScript 向服务器发送请求并获取数据,而无需刷新整个页面。AJAX 可以通过 XMLHttpRequest 对象来实现。
以下是一个使用原生 JavaScript 实现的简单的 AJAX 请求的示例:
function ajaxRequest(url, method, callback) {var xhr = new XMLHttpRequest();xhr.open(method, url, true);xhr.onreadystatechange = function() {if (xhr.readyState === 4 && xhr.status === 200) {callback(xhr.responseText);}};xhr.send();
}// 调用示例
ajaxRequest('https://api.example.com/data', 'GET', function(response) {console.log(response);
});
7)JavaScript为什么要进行变量提升,它导致了什么问题?
JavaScript 进行变量提升是为了在代码执行之前将变量和函数的声明提前到作用域的顶部。这意味着可以在声明之前使用这些变量和函数,从而避免了因为变量未定义而导致的错误。
然而,变量提升也可能导致一些问题。例如,如果在代码中重复声明同一个变量,后面的声明会覆盖前面的声明,这可能会导致意外的结果。此外,过度依赖变量提升可能会导致代码的可读性和维护性变差,因为变量和函数的实际位置可能不符合代码的顺序。
8)什么是尾调用,使用尾调用有什么好处?
尾调用是指函数内部的最后一个操作是调用另一个函数。使用尾调用有以下几个好处:
- 减少函数调用栈的大小:在尾调用中,每次递归调用不会创建新的函数调用帧,而是复用当前的函数调用帧,从而减少了内存的使用。
- 提高性能:由于尾调用不会增加函数调用栈的大小,因此可以减少内存的消耗和函数调用的时间。
- 优化尾递归:尾递归是一种特殊的尾调用,可以通过优化将递归转换为迭代,从而避免了递归调用栈溢出的问题。
9)ES6模块与CommonJS模块有什么异同?
ES6 模块与 CommonJS 模块都是 JavaScript 中用于模块化的规范,但存在一些异同:
异同点:
- 导出方式不同:ES6 模块使用
export
关键字导出模块,而 CommonJS 使用module.exports
导出模块。 - 导入方式不同:ES6 模块使用
import
关键字导入模块,而 CommonJS 使用require
导入模块。 - 执行时机不同:ES6 模块是在编译时执行,而 CommonJS 是在运行时执行。
- 导入的值不同:ES6 模块是值的引用,而 CommonJS 是值的拷贝。
不同点:
- 动态导入:ES6 模块支持动态导入,可以在代码运行时根据条件导入不同的模块,而 CommonJS 不支持动态导入。
- 模块循环引用处理:ES6 模块通过静态分析来处理循环引用,而 CommonJS 是在运行时处理循环引用。
10)常见的DOM操作有哪些
常见的 DOM 操作包括以下几种:
- 获取元素:使用
getElementById()
、getElementsByClassName()
、getElementsByTagName()
或querySelector()
等方法获取元素。 - 操作元素的内容:使用
innerHTML
、innerText
或textContent
属性来修改元素的内容。 - 操作元素的属性:使用
getAttribute()
和setAttribute()
方法来获取和设置元素的属性。 - 操作元素的样式:使用
style
对象来设置元素的样式,如element.style.color = 'red'
。 - 添加和删除元素:使用
appendChild()
、insertBefore()
和removeChild()
方法来添加和删除元素。 - 绑定事件:使用
addEventListener()
方法来为元素绑定事件处理函数。 - 修改元素的类名:使用
classList
对象的add()
、remove()
和toggle()
方法来修改元素的类名。 - 遍历元素:使用
childNodes
或children
属性来遍历元素的子节点,使用parentNode
属性来遍历元素的父节点。
开源项目地址:https://gitee.com/falle22222n-leaves/vue_-book-manage-system
已 300 + Star!
⭐点赞⭐收藏⭐不迷路!⭐
相关文章:

面试 JavaScript 框架八股文十问十答第五期
面试 JavaScript 框架八股文十问十答第五期 作者:程序员小白条,个人博客 相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新! ⭐点赞⭐收藏⭐不迷路!⭐ 1)常见的位运算符有…...

[职场] 如何通过运营面试_1 #笔记#媒体#经验分享
如何通过运营面试 盈利是公司的事情,而用户就是你运营的事情。你需要彻底建立一个庞大而有效的用户群,这样才能让你们的公司想盈利就盈利,想战略就战略,想融资就融资。 一般从事运营的人有着强大的自信心,后台数据分析…...

CTFshow web(命令执行 41-44)
web41 <?php /* # -*- coding: utf-8 -*- # Author: 羽 # Date: 2020-09-05 20:31:22 # Last Modified by: h1xa # Last Modified time: 2020-09-05 22:40:07 # email: 1341963450qq.com # link: https://ctf.show */ if(isset($_POST[c])){ $c $_POST[c]; if(!p…...

XML介绍和基本语法
XML简介 XML(eXtensible Markup Language,可扩展标记语言)是一种用于标记电子文件使其具有结构性的标记语言。它允许用户定义自己的标记元素,使得信息的共享和数据的存储更加便捷和通用。XML广泛应用于Web开发、配置文件、数据交…...

Android:Android Studio安装及环境配置
1开发环境搭建 Android开发需要使用java的jdk环境,所以需要下载JAVA JDK。 1.1安装配置JAVA JDK Java的JDK下载: https://www.oracle.com/technetwork/java/javase/downloads/index.html 配置java的环境变量: JAVA_HOME:java安装路径。 新增环境变量CLASSPATH 在Path环境…...

力扣刷题之旅:进阶篇(三)
力扣(LeetCode)是一个在线编程平台,主要用于帮助程序员提升算法和数据结构方面的能力。以下是一些力扣上的入门题目,以及它们的解题代码。 --点击进入刷题地址 一、动态规划(DP) 首先,让我们来…...

代码随想录 Leetcode55. 跳跃游戏
题目: 代码(首刷自解 2024年2月9日): class Solution { public:bool canJump(vector<int>& nums) {int noz 0;for (int i nums.size() - 2; i > 0; --i) {if (nums[i] 0) {noz;continue;} else {if (nums[i] > noz) noz …...

Go Context -- 管理请求的上下文信息
在Go语言中,管理请求的上下文信息对于构建可靠的并发程序至关重要。context 包为我们提供了一种优雅的方式来传递请求的取消信号、超时信息和请求范围的值。接下来将深入探讨Go中的 context 包,包括其基本概念、用法、实际应用场景和最佳实践,…...

springboot170图书电子商务网站的设计与实现
简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…...

设计模式(结构型模式)适配器模式
目录 一、简介二、使用2.1、目标接口2.2、被适配者2.3、适配器2.4、使用 一、简介 适配器模式是一种结构型设计模式,允许将一个类的接口转换成客户端所期望的另一个接口,使得原本由于接口不兼容而不能一起工作的类能够协同工作。适配器模式通常用于连接两…...

计算机网络基本知识(二)
文章目录 概要分层为什么分层怎么分层?1.实体2.协议3.服务 分层基本原则正式认识分层详细例子解释 总结 概要 分层知识:概念理解 分层 为什么分层 大致以上五点 为了解决上面的问题(复杂) 大问题划分为小问题 怎么分层&#…...

158基于matlab的用于分析弧齿锥齿轮啮合轨迹的程序
基于matlab的用于分析弧齿锥齿轮啮合轨迹的程序,输出齿轮啮合轨迹及传递误差。程序已调通,可直接运行。 158 matlab 弧齿锥齿轮啮合轨迹 传递误差 (xiaohongshu.com)...

C#中的浅度和深度复制(C#如何复制一个对象)
文章目录 浅度和深度复制浅度复制深度复制如何选择 浅度和深度复制 在C#中,浅度复制(Shallow Copy)和深度复制(Deep Copy)是两种不同的对象复制方式,满足不同的应用场景需求,它们主要区别在于处…...

2.6日学习打卡----初学RabbitMQ(一)
2.6日学习打卡 初识RabbitMQ、 一. MQ 消息队列 MQ全称Message Queue(消息队列),是在消息的传输过程中保 存消息的容器。多用于系统之间的异步通信。 同步通信相当于两个人当面对话,你一言我一语。必须及时回复 异步通信相当于通…...

Rust语言之集合
文章目录 一、元组(tuple)1.元组定义2.元组使用解构索引 3.元组修改非可变元组可变元组类型不一致 二、数组1.数组不可变数组定义可变数组定义数组使用数组修改数组的遍历 2.动态数组-向量(Vector)向量定义向量遍历向量追加向量插…...

有道论文翻译接口,python版和lua版
论文翻译接口python版 import requests import hashlib from urllib.parse import quotedef get_md5(s,is_hexTrue):md5hashlib.md5()md5.update(s.encode())if is_hex:return md5.hexdigest()return md5.digest()def translate(source_url,from_en,tozh-CHS):params {from: f…...

java大数据hadoop2.9.2 Flume安装操作
1、flume安装 (1)解压缩 tar -xzvf apache-flume-1.9.0-bin.tar.gz rm -rf apache-flume-1.9.0-bin.tar.gz mv ./apache-flume-1.9.0-bin/ /usr/local/flume (2)配置 cd /usr/local/flume/conf cp ./flume-env.sh.template…...

环境配置:Ubuntu18.04 ROS Melodic安装
前言 不同版本的Ubuntu与ROS存在对应关系。 ROS作为目前最受欢迎的机器人操作系统,其核心代码采用C编写,并以BSD许可发布。ROS起源于2007年,是由斯坦福大学与机器人技术公司Willow Garage合作的Switchyard项目。2012年,ROS团队从…...

2024.2.7-8 寒假训练记录(21)
文章目录 洛谷P3193 [HNOI2008] GT考试ATC abc339E Smooth SubsequenceATC abc339F Product Equality 洛谷P3193 [HNOI2008] GT考试 题目链接 KMPdp矩阵快速幂 还没有理解得很清楚,主要是对KMP理解还不够深刻 #include <bits/stdc.h>using namespace std;…...

C++ pair 的使用
pair的作用 C 中的 std::pair 是标准模板库 (STL) 提供的一个容器,它能够存储两个不同类型的数据作为一个整体,其中first:访问 pair 的第一个元素。second:访问 pair 的第二个元素。 int main() {pair<string, int> p;//通…...

AAAI 2024 | Adobe提出全新上下文提示学习框架CoPL,高效提升下游性能
论文题目:CoPL: Contextual Prompt Learning for Vision-Language Understanding 论文链接:https://arxiv.org/abs/2307.00910 提示学习(Prompt Learning)在近几年的快速发展,激活了以Transformer为基础的大型语言模型…...

Arcgis使用过程中常见问题解决方法
Arcgis无法连接数据库/数据库连接或创建失败解决方法 最近在使用arcgis过程中出现无法连接数据库或者是无法创建数据库。连接到数据库失败;无法创建新的数据库,权限被拒绝(如下图)。 出现这个原因是你所用的电脑系统文件dao360.…...

office文件转pdf在线预览
一、工具类 package com.sby.utils;import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.math.RoundingMode; import java.text.DecimalFormat; import java.util.Locale;import com.aspose.cel…...

设计模式2-对象池模式
对象池模式,Object Pool Pattern,当你的应用程序需要频繁创建和销毁某种资源(比如数据库连接、线程、socket连接等)时,Object Pool 设计模式就变得很有用。它通过预先创建一组对象并将它们保存在池中,以便在…...

Oracle笔记-为表空间新增磁盘(ORA-01691)
如下报错: 原因是Oracle表空间满了,最好是新增一个存储盘。 #查XXX命名空间目前占用了多大的空间 select FILE_NAME,BYTES/1024/1024 from dba_data_files where tablespace_name XXXX #这里的FILE_NAME能查到DBF的存储位置#将对应的datafile设置为30g…...

【专业技术】高效并行分布式深度学习策略,助力模型训练与量化
尊敬的客户,您好!我们是一家专注于提供高效深度学习解决方案的专业团队,为您提供并行分布式策略、高效精调策略、大模型无损量化和高性能推理服务。 我们的服务包括: 并行分布式策略:我们的Trainer封装支持多种并行配…...

力扣-137. 只出现一次的数字 II
文章目录 力扣题目代码 力扣题目 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。 示例 1:…...

Rust 格式化输出
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、format! 宏二、fmt::Debug三、fmt::Display四、? 操作符 循环打印 前言 Rust学习系列-本文根据教程学习Rust的格式化输出,包括fmt::Debug&…...

c#进程(Process)常用方法
在C#中,Process类提供了一系列用于操作进程的常用方法,以下是其中一些常用的方法: Start():启动一个新的进程。 Process.Start("notepad.exe");Kill():终止进程。 Process.GetProcessesByName("note…...

Vue源码系列讲解——虚拟DOM篇【三】(更新子节点)
1. 前言 在上一篇文章中,我们了解了Vue中的patch过程,即DOM-Diff算法。并且知道了在patch过程中基本会干三件事,分别是:创建节点,删除节点和更新节点。创建节点和删除节点都比较简单,而更新节点因为要处理…...