想拿高薪?2024年前端面试必问的10道挑战性JS题目!

历史管理

window.location.hash:网址的后面添加的# 字符串 旧方法
如:window.location.hash = num; 读取(会加1个#)、设置(会加1个#)

window.onhashchange改变hash值时触发事件

window.onpopstate : 改变hash值时触发事件
event.state; 历史管理中,当前hash值对应的存储数据

history.pushState(data,‘‘,网址后面加的字符串) 新方法 存储数据data,设置hash值(不包括#) 必须在服务器环境中,否则无效
参数1:存进历史管理的数据
参数2:标题;还未实现,直接用‘‘
参数3:可选参数,给网址后面加的字符串;给人网址变换的感觉;不添加时,网址不发生改变
网址时虚拟的,刷新时找不到页面

event事件

event事件的兼容 如:var ev = ev || event;

event.currentTarget 事件绑定的元素
event.target 事件触发的元素,不一定是事件绑定的元素,可能是发生事件冒泡的下级元素
event.clientX / event.clientY : 鼠标到页面可视区(屏幕),左边/顶部的距离 (只有数字,没有单位)
event.pageX / event.pageY 到整个网页的值

event.stopPropagation() 阻止冒泡 标准浏览器
event.cancelBubble = true 阻止冒泡 只支持IE
event.stopImmediatePropagation() 阻止冒泡,阻止本身的事件(阻止在该语句之后的事件,之前的事件无法阻止) 标准浏览器

event.preventDefault(); 阻止默认
return false;阻止默认行为、阻止冒泡 只能阻止obj.on事件名称=fn 、attachEvent(IE)所触发的默认行为

event.which 键盘的键值、鼠标值 keydown、keyup、mousedown、mouseup事件中使用
鼠标左键、滚轮、鼠标右键分别对应1、2、3(测鼠值时必须使用mousedown、或者mouseup,否则出现问题)
event.ctrlKey 按ctr时,返回true,否则返回false
event.shiftKey 按shift时,返回true,否则返回false
event.keyCode 返回键值的编码值

sessionStorage、localStorage:本地存储、本地会话

localStorage永久存储,关闭浏览器,本地存储都不会消失(只针对相同的浏览器) 能多个相同的页面共享数据
sessionStorage临时存储,关闭浏览器,本地会话消失 不能多个相同的页面共享数据
必须是服务器环境,否则相关的事件无效

window.sessionStorage、window.localStorage:方法一样
注意:数据名称、数据具体值,必须加上引号,除非是变量,或者表达式,否则出错

window.localStorage.getItem(‘name‘):获取数据,通过key来获取到相应的value
window.localStorage.setItem(‘name‘,‘value‘):设置数据,keyvalue类型,类型都是字符串

window.localStorage.removeItem(‘name‘):删除数据,通过key来删除相应的value
window.localStorage.clear():删除全部存储的值

原始js操作html元素

父级元素:
元素.parentNode

子级元素:
元素.children
元素.firstElementChild || 元素.firstChild: (只读)第一个子节点
元素.lastElementChild || 元素.lastChild

兄弟元素:
元素.nextElementSibling || 元素.nextSibling (只读)下一个兄弟节点
元素.previousElementSibling || 元素.previousSibling (只读)上一个兄弟节点

删除、替换、插入元素:
父级.removeChild(要删除的元素); 删除子元素 (通过父级删除子集)
父级.replaceChild(新节点,被替换的子节点) 替换子节点
父级.appendChild(要添加的元素) 追加子元素
父级.insertBefore(新的元素,被插入的元素) 在指定子元素前面插入一个新元素

canvas绘图

var oc=document.querySelector(‘#c1‘);
oGc=oc.getContext(“2d“); //必须设置绘制环境,否则绘制图案

context.toDataURL() 将canvas内的图像,转成img.src

context.downloadimage(ocanvas1,“png“); 下载图片
context.drawImage(img,x,y); 在画布上定位图像。复制图片、视频
context.drawImage(img,x,y,width,height); 在画布上定位图像,并规定图像的宽度和高度
context.drawImage(img,sx,sy,swidth,sheight,x,y,width,height); 剪切图像,并在画布上定位被剪切的部分

context.getImageData():复制画布上指定矩形的像素数据,获取图像每个像素的数据
如果你的img_url和你的页面不是同源的,那么getImageData会导致错误
context.putImageData():将图像数据放回画布

前端数据存储有那些

url参数
cookie
localStorage
sessionStorage
indexedDB

for in、for of的区别

for in总是得到对象的key或数组、字符串的下标
for of总是得到对象的value或数组、字符串的值

null和undefined的区别?

Null访问一个不存在对象返回的值,表示空对象
Undefined:访问一个未初始化变量(声明完没有赋值的变量)返回的值,表示空变量

document load 和document ready的区别

document.onload是在结构和样式,外部js以及图片加载完才执行js
document.ready是 dom 树创建完成就执行的方法,原生中没有这个方法,jquery中有$().ready(function)

js中,数字形式的字符串和数字相加的规则

把数字和数字相加
把字符串和字符串相加
所有其他类型的值都会被自动转换成这两种类型的值

console.log(-1 ‘5‘); // -15
console.log(1 ‘5‘); // 15

console.log(1 - ‘5‘); // -4
console.log(-1 - ‘5‘); // -6

手动实现 Object.assign

创建新对象,循环赋值

打散合并在新的对象中

免费的API接口开放平台

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生信技能51 - 基于BAM文件的微生物污染分析流程

微生物污染分析流程 需提前安装好bwa, bowtie2, samtools,提取未比对到人类参考基因组的bam文件,将其比对到微生物参考基因组,根据比对情况查看是否存在污染。 微生物基因组下载可参考本人文章: 生信软件24 - 查询物种分类学信息和下载基因组TaxonKit和ncbi-genome-down…

拓扑学习系列(9)计算代数拓扑中的复形COMPLEXES

复形 在代数拓扑学中,复形(complexes)是一种重要的代数结构,用于研究拓扑空间的代数性质和同调理论。复形由一系列的单纯形(simplices)以特定方式组合而成,形成一个复杂的结构,通过…

Joblib 是一个专注于高效计算和数据持久化的 Python 库

目录 01Joblib 是什么? 为什么选择 Joblib? 安装与配置 02Joblib 的基本用法 并行计算 数据持久化 03实战案例 项目简介 项目结构 依赖安装 应用代码 运行应用 …

mybatisPlus切换数据源不生效和分页不生效解决方法

1.切换数据源不生效 mybatisPlus中,提供了切换数据源的注解DS(“”) 但是发现注解并不生效,此时可能性有以下几种: DS注解使用的接口中,一步一步查找是不是使用了Transactional(rollbackFor Exception.class)注解&a…

FunAudioLLM SenseVoice语音转录与CosyVoice语音合成及语音克隆使用案例

参考: https://fun-audio-llm.github.io/ 1、SenseVoice语音转录 在线体验:https://modelscope.cn/studios/iic/CosyVoice-300M 参考:https://github.com/FunAudioLLM/SenseVoice 下载: pip install -U funasr使用: from funasr import AutoModelmodel_dir = "…

怎么将几首音乐合并在一起?这四种合并方法大家都在用!

怎么将几首音乐合并在一起?在音乐的海洋中遨游时,我们是否曾被音乐的海洋所淹没?在享受旋律的流转中,我们是否频繁地在不同的曲目间穿梭,仿佛迷失在无尽的音符之中?但音乐数量的繁多,不仅带来了…

单对以太网连接器多场景应用

单对以太网连接器应用场景概述 单对以太网(Single Pair Ethernet,简称SPE)作为一种新兴的以太网技术,以其独特的优势在多个领域得到了广泛的应用。SPE通过单对电缆进行数据传输,支持高速数据传输,同时还能…

pdf容量大小怎么改,pdf容量太大怎么变小

在数字化时代,pdf文件因其稳定性和跨平台兼容性而成为工作、学习和生活中不可或缺的文件格式。然而,随着文件内容的丰富,pdf文件的体积也日益增大,给存储和传输带来了不少困扰。本文将为你详细介绍多种实用的pdf文件压缩方法&…

搜维尔科技:远程操作,遥操作机器人进行 TCP点胶演示

搜维尔科技:远程操作,遥操作机器人进行 TCP点胶演示 搜维尔科技:远程操作,遥操作机器人进行 TCP点胶演示

基于STM32的智能加湿器

1.简介 基于STM32的加湿器发展前景非常乐观,这主要得益于其在技术、市场需求、应用场景以及政策支持等多方面的优势。STM32微控制器具备强大的处理能力和丰富的外设接口,能够实现精确的湿度监测和智能化控制。基于STM32的加湿器可以根据环境湿度自动调节…

光学传感器图像处理流程(一)

光学传感器图像处理流程(一) 1. 处理流程总览2. 详细处理流程2.1. 图像预处理2.1.1. 降噪处理2.1.2. 薄云处理2.1.3. 阴影处理 2.2. 辐射校正2.2.1. 辐射定标2.2.2. 大气校正2.2.3. 地形校正 2.3. 几何校正2.3.1. 图像配准2.3.2. 几何粗校正2.3.3. 几何精…

7.9总结

容易推出当移动i与j时等价于j-i-1个左右交换,且每次交换逆序数的奇偶改变(无相同元素),假设有一个状态c,且a与b必须以等量的左右交换转移为c,则必须数量相同,元素相同(使用异或解决&…

如何忽略部分文件或者文件夹在git提交项目时

嗨,我是兰若,最近发现有些小伙伴在提交代码时,总是把不该提交的文件,比如说本地批跑的缓存文件给提交到了git上面,导致别人在拉取代码的时候,也会把这部分文件拉取到自己本地,从而导致和本地的缓…

Debezium报错处理系列之第114篇:No TableMapEventData has been found for table id:256.

Debezium报错处理系列之第114篇:Caused by: com.github.shyiko.mysql.binlog.event.deserialization.MissingTableMapEventException: No TableMapEventData has been found for table id:256. Usually that means that you have started reading binary log within the logic…

全面解析Python:现代编程语言

引言 Python是一种高级、解释型、动态和面向对象的编程语言,由Guido van Rossum于1991年发布。它以简洁、可读性强的代码和丰富的库支持著称,是数据科学、机器学习、Web开发、自动化脚本等领域的首选语言。本文将详细介绍Python的基本概念、高级主题、数…

如何借助社交媒体影响者的力量,让品牌影响力倍增?

一、引言:为何社交媒体影响者如此关键? 在信息爆炸的今天,社交媒体已成为塑造消费者行为与品牌认知的重要渠道。社交媒体影响者,凭借其在特定领域的专业知识、庞大的粉丝基础及高度的互动性,成为了品牌传播不可忽视的…

Redis的使用(三)常见使用场景-session共享

1.绪论 redis是一款高性能的缓存框架,那它在实际开发过程中有哪些作用呢?今天我们就来聊一聊。 2.session共享 2.1 问题描述 现在所有的网页都有一个功能,就是在用户第一次登陆成功过后,再次进入到这个页面,就不用…

大模型预训练-数据准备

名词释义 预训练:大模型训练的第一个阶段数据集污染:预训练数据中包含测试数据中的部分或全部 数据来源 通用数据 网页书籍 专用数据 多语文本科学论文代码 数据预处理 质量过滤 基于启发式规则 规则建议 基于语种过滤(过滤不支持的语…

kafka 消费者

消费者 消费者。消费者连接到Kafka上并接收消息,进而进行相应的业务逻辑处理。 消费组 消费者负责订阅Kafka中的主题,并且从订阅的主题上拉取消息。 消费组:每个消费者都有一个对应的消费组,每一个分区只能被一个消费组中的一个…

如何控制代码质量

大家好,我是嘻嘻,你们厂里是如何控制代码的质量的说道说道 最近的工作,主要是要偏重项目的质量管理这块,项目管理的现在一切以质量为导向,成本和质量冲突优先质量,进度与质量冲突优先质量,真正的…