当前位置: 首页 > news >正文

【面试题】JavaScript 你常用的 函数有哪些呢? (12个)

 大厂面试题分享 面试题库

前后端面试题库 (面试必备) 推荐:★★★★★

地址:前端面试题库  web前端面试题库 VS java后端面试题库大全

本文收集了 12 个在日常开发中非常常用的函数,有些可能很复杂,有些可能很简单,但我相信或多或少会对大家都会有所帮助。

生成随机颜色

你的网站是否需要生成随机颜色?下面一行代码就可以实现。

const generateRandomHexColor = () => `#${Math.floor(Math.random() * 0xffffff).toString(16)}`console.log(generateRandomHexColor())
复制代码

数组重排序

对数组的元素进行重新排序是一项非常重要的技巧,但是原生 Array 中并没有这项功能。

const shuffle = (arr) => arr.sort(() => Math.random() - 0.5)const arr = [1, 2, 3, 4, 5]
console.log(shuffle(arr))
复制代码

复制到剪切板

复制到剪切板是一项非常实用且能够提高用户便利性的功能。

const copyToClipboard = (text) => navigator.clipboard && navigator.clipboard.writeText && navigator.clipboard.writeText(text)copyToClipboard("Hello World!")
复制代码

检测暗色主题

暗色主题日益普及,很多用的都会在设备中启用案模式,我们将应用程序切换到暗色主题可以提高用户体验度。

const isDarkMode = () => window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches;console.log(isDarkMode())
复制代码

滚动到顶部

将元素滚动到顶部最简单的方法是使用 scrollIntoView。设置 block 为 start 可以滚动到顶部;设置 behavior 为 smooth 可以开启平滑滚动。

const scrollToTop = (element) => element.scrollIntoView({ behavior: "smooth", block: "start" });
复制代码

滚动到底部

与滚动到顶部一样,滚动到底部只需要设置 block 为 end 即可。

const scrollToBottom = (element) => element.scrollIntoView({ behavior: "smooth", block: "end" });
复制代码

检测元素是否在屏幕中

检查元素是否在窗口中最好的方法是使用 IntersectionObserver。

const callback = (entries) => {entries.forEach((entry) => {if (entry.isIntersecting) {// `entry.target` is the dom elementconsole.log(`${entry.target.id} is visible`);}});
};const options = {threshold: 1.0,
};
const observer = new IntersectionObserver(callback, options);
const btn = document.getElementById("btn");
const bottomBtn = document.getElementById("bottom-btn");
observer.observe(btn);
observer.observe(bottomBtn);
复制代码

检测设备

使用 navigator.userAgent 来检测网站运行在哪种平台设备上。

const detectDeviceType = () =>/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ? "Mobile" : "Desktop";console.log(detectDeviceType());
复制代码

隐藏元素

我们可以将元素的 style.visibility 设置为 hidden,隐藏元素的可见性,但元素的空间仍然会被占用。如果设置元素的 style.display 为 none,会将元素从渲染流中删除。

const hideElement = (el, removeFromFlow = false) => {removeFromFlow ? (el.style.display = 'none'): (el.style.visibility = 'hidden')
}
复制代码

从 URL 中获取参数

JavaScript 中有一个 URL 对象,通过它可以非常方便的获取 URL 中的参数。

const getParamByUrl = (key) => {const url = new URL(location.href)return url.searchParams.get(key)
}
复制代码

深拷贝对象

深拷贝对象非常简单,先将对象转换为字符串,再转换成对象即可。

const deepCopy = obj => JSON.parse(JSON.stringify(obj))
复制代码

除了利用 JSON 的 API,还有更新的深拷贝对象的 structuredClone API,但并不是在所有的浏览器中都支持。

structuredClone(obj)
复制代码

等待函数

JavaScript 提供了 setTimeout 函数,但是它并不返回 Promise 对象,所以我们没办法使用 async 作用在这个函数上,但是我们可以封装等待函数。

const wait = (ms) => new Promise((resolve)=> setTimeout(resolve, ms))const asyncFn = async () => {await wait(1000)console.log('等待异步函数执行结束')
}asyncFn()

大厂面试题分享 面试题库

前后端面试题库 (面试必备) 推荐:★★★★★

地址:前端面试题库  web前端面试题库 VS java后端面试题库大全

 

http://www.lryc.cn/news/59099.html

相关文章:

  • Java集合——Set接口学习总结
  • 2023最全的自动化测试入门基础知识(建议收藏)
  • 【RabbitMQ】SpringBoot整合RabbitMQ、实现RabbitMQ五大工作模式(万字长文)
  • ES6(函数扩展、数组扩展)
  • postman汉化教程
  • java day8
  • 口令暴力破解--Telnet协议暴力破解、数据库暴力破解与远程桌面暴力破解
  • [译]什么是SourceMap
  • saga模式、Seata saga模式详解
  • java开发工程师碰到技术难题怎么办?我来聊聊我的做法
  • 高比例可再生能源电力系统的调峰成本量化与分摊模型(Matlab代码实现)
  • Hive安装与操作
  • oracle centos7安装Oracle12(附oracle所有版本安装包)
  • ESP32学习二-更新Python版本(Ubuntu)
  • 【19】核心易中期刊推荐——人工智能 | 遥感信息处理
  • MySQL运维10-MySQL数据的导入导出
  • 全国计算机等级考试——二级JAVA完整大题题库【五十三道】
  • 【算法题解】24. 模拟机器人行走
  • PyTorch 深度学习实战 |用 TensorFlow 训练神经网络
  • 【进阶C语言】静态版通讯录的实现(详细讲解+全部源码)
  • 【JavaWeb】后端(Maven+SpringBoot+HTTP+Tomcat)
  • 面试官:准备了一些springboot相关的面试题,快来看看吧
  • 原子的波尔模型、能量量子化、光电效应、光谱实验、量子态、角动量
  • 【如何使用Arduino控制WS2812B可单独寻址的LED】
  • 计算机基本知识扫盲(持续更)
  • 学习大数据需要什么语言基础
  • ElasticSearch——详细看看ES集群的启动流程
  • 【教学类-30-01】5以内加法题不重复(一页两份)(包含1以内、2以内、3以内、4以内、5以内加法,抽取最大不重复数量)
  • 写博客8年与人生第一个502万
  • 【华为OD机试真题】日志采集系统(javapython)