15个有用的JavaScript技巧

news2024/9/20 14:54:49

 

今天这篇文章,是我从网络上整理的一些常见的 JavaScript Tips。我在我的项目中使用了所有这些实用技巧,今天我想把它们分享给你,希望也能够帮助到你。

1.数字分隔符

为了提高数字的可读性,可以使用下划线作为分隔符。

const largeNumber = 1_000_000_000;

console.log(largeNumber); // 1000000000

2.事件监听器只运行一次

如果你想添加一个事件监听器并且只运行一次,你可以使用 once 选项。

element.addEventListener('click', () => console.log('I run only once'), {
    once: true
});

3.console.log变量包装器

在 console.log() 中,将参数括在花括号中,以便您可以同时看到变量名和变量值。

const name = "Maxwell";
console.log({ name });

4.检查 Caps Lock 是否打开

您可以使用 KeyboardEvent.getModifierState() 来检测 Caps Lock 是否打开。

const passwordInput = document.getElementById('password');

passwordInput.addEventListener('keyup', function (event) {
    if (event.getModifierState('CapsLock')) {
        // CapsLock is open
    }
});

5.从数组中获取最小值/最大值

您可以结合扩展运算符使用 Math.min() 或 Math.max() 来查找数组中的最小值或最大值。

const numbers = [5, 7, 1, 4, 9];

console.log(Math.max(...numbers)); // 9
console.log(Math.min(...numbers)); // 1

6.获取鼠标位置

您可以使用 MouseEvent 对象的 clientX 和 clientY 属性的值来获取有关当前鼠标位置坐标的信息。

document.addEventListener('mousemove', (e) => {
    console.log(`Mouse X: ${e.clientX}, Mouse Y: ${e.clientY}`);
});

7.复制到剪贴板

您可以使用剪贴板 API 创建“复制到剪贴板”功能。

function copyToClipboard(text) {
    navigator.clipboard.writeText(text);
}

8.简写条件判断语句

如果函数只在条件为真时才执行,可以使用&&简写。

// Common writing method
if (condition) {
    doSomething();
}

// Abbreviations
condition && doSomething();

9.console.table() 以特定格式打印表格

语法:

console.table(data [, columns]);

参数:

data 表示要显示的数据。它必须是数组或对象。

columns 表示包含列名称的数组。

   function Person(firstName, lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    const p1 = new Person("Mark", "Smith");
    const p2 = new Person("Maxwell", "Siegrist");
    const p3 = new Person("Lucy", "Jones");

    console.table([p1, p2, p3], ["firstName"]);

10.将字符串转换为数字

const str = '508';

console.log(+str) // 508;

11.阵列去重

const numbers = [2, 3, 5, 5, 2];

console.log([...new Set(numbers)]); // [2, 3, 5]

12.过滤数组中的所有虚拟值

const myArray = [1, undefined, NaN, 2, null, '@maxwell', true, 5, false];

console.log(myArray.filter(Boolean)); // [1, 2, "@maxwell", true, 5]

13.include的用途

const myTech = 'JavaScript';
const techs = ['HTML', 'CSS', 'JavaScript'];

// Common writing method
if (myTech === 'HTML' || myTech === 'CSS' || myTech === 'JavaScript') {
    // do something
}

// includes writing method
if (techs.includes(myTech)) {
    // do something 
}

14.大量使用 reduce 求和数组

const myArray = [10, 20, 30, 40];
const reducer = (total, currentValue) => total + currentValue;

console.log(myArray.reduce(reducer)); // 100

15.元素的数据集

使用数据集属性访问元素的自定义数据属性 (data-*)。

<div id="user" data-name="Maxwell" data-age="32" data-something="Some Data">
    Hello Maxwell
</div>

<script>
    const user = document.getElementById('user');

    console.log(user.dataset); 
    // { name: "Maxwell", age: "32", something: "Some Data" }

    console.log(user.dataset.name); // "Maxwell"
    console.log(user.dataset.age); // "32"
    console.log(user.dataset.something); // "Some Data"
</script>

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

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

相关文章

pytorch学习记录

pytorch学习记录0.引言1.numpy 简单入门1.1.常用基础1.2.numpy其他学习2.pytorch 简单入门2.1.Pytorch的基本组成元素2.2.Pytorch构建神经网络2.3.进阶部分2.4.其他参考资料0.引言 一步一步积累吧。 一篇不错的博客 1.numpy 简单入门 1.1.常用基础 numpy中文手册 numpy官方…

【李宏毅】HW12

HW12一、作业描述1、Policy Gradient2、Actor-Critic二、实验1、simple2、medium3、strong三、代码一、作业描述 在这个HW中&#xff0c;你可以自己实现一些深度强化学习方法&#xff1a; 1、策略梯度Policy Gradient 2、Actor-Critic 这个HW的环境是OpenAI gym的月球着陆器。…

ubuntu | 重装ubuntu(VMware虚拟机环境)

前言 最近又把双系统的ubuntu搞崩了&#xff0c;在grub界面进不去&#xff0c;估计找不到启动项&#xff0c;被迫重装。 这次觉得还是windows系统好使&#xff0c;就用vmware虚拟机了。 一、安装vmware虚拟机 参考我之前的博客。 二、安装ubuntu 下载ubuntu18.04的iso文件…

15.2 浏览器中的进程

浏览器中的进程 start 上一篇文章&#xff0c;学习到了如何区分进程和线程。在这里再复习一下&#xff0c;进程类似于一个工厂&#xff0c;线程类似于工厂的工人&#xff0c;一个工厂可以有一个或多个工人。 1. 浏览器的进程 一个浏览器中有很多的进程&#xff0c;我以谷歌…

2023年的摸鱼小技巧:Python自动生成请假条【思路详解】

嗨害大家好鸭&#xff01;我是小熊猫~ 这不2023到了&#xff0c;新的一年&#xff0c;新的摸鱼 在办公室里的小透明来实现用Python来批量生成请假条&#xff0c; 这波啊&#xff0c;这波是智取&#xff01;&#xff01;&#xff01; Python资料电子书:点击此处跳转文末名片获…

Excel函数公式大全—SUMIF/SUMIFS函数

EXCEL系列文章目录 Excel系列文章是本人亲身经历职场之后萌发的想法&#xff0c;为什么Excel覆盖如此之广&#xff0c;几乎每个公司、学校、家庭都在使用&#xff0c;但是它深藏的宝藏功能却很少被人使用&#xff0c;PQ、BI这些功能同样适用于数据分析&#xff1b;并且在一些需…

内部成员之五:内部类

文章目录一、内部类分类&#xff1a;成员内部类vs局部内部类成员内部类实例化成员内部类每日一考一、内部类 1、Java中允许将类A声明在类B中&#xff0c;则类A就是内部类&#xff0c;类B为外部类。 分类&#xff1a;成员内部类vs局部内部类 成员内部类&#xff08;静态、非静…

【ElasticSearch7.X】学习笔记(三)

【ElasticSearch7.X】学习笔记五、集群部署5.1、相关概念5.1.1、集群 Cluster3.1.2、节点 Node5.2、下载安装5.3、 启动5.4、 测试六、进阶6.1、核心概念6.1.1、索引&#xff08;Index&#xff09;6.1.2、类型&#xff08;Type&#xff09;6.1.3、文档&#xff08;Document&…

Handler的学习

一、Handler到底有什么用呢&#xff1f; 首先看以下案例&#xff1a; public class MainActivity extends AppCompatActivity { Button btn;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activi…

vue这些原理你都知道吗?(面试版)

前言 在之前面试的时候我自己也经常会遇到一些vue原理的问题, 我也总结了下自己的经常的用到的,方便自己学习,今天也给大家分享出来, 欢迎大家一起学习交流, 有更好的方法欢迎评论区指出, 后序我也将持续整理总结~ 描述 Vue 与 React 区别 说明概念: vue:是一套用于构建用户…

虚拟化技术学习笔记3

1、KVM虚拟机管理工具部署 学习目标&#xff1a; 能够为KVM虚拟机管理工具部署准备环境 能够部署KVM虚拟机管理工具 1、KVM系统需求&#xff1a; 1&#xff09;Host system requirements: 1核心、2G内存、6G硬盘 2&#xff09;KVM hypervisor requirements&#xff1a; l…

U3D客户端框架(资源管理篇)之主资源加载器模块设计实现

一、主资源加载器模块设计实现 作用 主资源加载器是为面向用户而设计的上层应用层类&#xff0c;用户使用主资源加载器作为文件加载器加载文件&#xff0c; 加载器可以通过Assetbundle方式加载&#xff0c;Http方式加载资源。 UML类图设计 前置模块 主资源加载器需要引用到一…

Qt扫盲-QHash理论总结

QHash理论总结一、概述二、使用1. 添加 元素2. 获取元素3. 遍历元素4. 删除元素5. qHash()的散列函数6.算法复杂性一、概述 QHash是Qt的通用容器类之一。它和QMap一样是用来存储(键&#xff0c;值)对的工具&#xff0c;并提供快速查找与键相关联的值的功能。 QHash提供了与QMa…

密码学的一些常识01

序 作为一个小白&#xff0c;对称加密&#xff0c;非对称加密&#xff0c;数字签名&#xff0c;数字证书&#xff0c;CA&#xff0c;diff-helman&#xff0c;DES,AED,RSA……这些都不会。所以&#xff0c;百度启动&#xff0c;先初步了解。 实际应用 我是个小白……0基础的&…

sklearn中精确率、召回率及F1值得micro,macro及weighted算法

为什么要用精确率和召回率 有这样一个训练集&#xff0c;1000个人参加了结直肠癌CRC的检测&#xff0c;实际有0.5%的人得了CRC&#xff08;即5个人&#xff09;。用神经网络算法得到检测这样一个训练集能达到99%的准确率。从数值上判断该算法是不错的&#xff0c;因为只有1%的误…

springboot+disruptor再体验

Disruptor是一个高性能队列&#xff0c;常见的还有kafka、rabbitmq等&#xff0c;下面体验一下~ 1、Disruptor简介 Disruptor 是英国外汇交易公司LMAX开发的一个高性能队列&#xff0c;研发的初衷是解决内存队列的延迟问题&#xff08;在性能测试中发现竟然与I/O操作处于同样的…

[C++]STL之string的模拟实现

上一章我们对string的常见接口及使用进行了讲解&#xff0c;接下来我们将对一些常见的接口&#xff0c;包括构造函数&#xff0c;析构函数&#xff0c;运算符重载等等进行模拟实现.方便我们理解string接口实现的原理. 在讲解之前先说一下string的成员变量. 首先是字符串内容_…

微信小程序picker组件遇到的问题以及解决办法

一、picker基本概念二、遇到的问题三、如何解决四、延伸五、效果图一、picker基本概念 先来看一下官方文档中picker的基本概念&#xff1a; 从底部弹起的滚动选择器&#xff0c;现支持三种选择器&#xff0c;通过mode来区分&#xff0c;分别是普通选择器&#xff0c;时间选择器…

Bochs下载安装

文章目录下载Bochs配置BochsBochs Bochs是一个x86硬件平台的开源模拟器。它可以模拟各种硬件的配置。Bochs模拟的是整个PC平台&#xff0c;包括I/O设备、内存和BIOS。更为有趣的是&#xff0c;甚至可以不使用PC硬件来运行Bochs。事实上&#xff0c;它可以在任何编译运行Bochs的…

【Unity3D编辑器扩展】Unity3D中实现Text的字体的替换

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 在开发中会遇到要将场景中的Text的字体全部替换的情况。 所以…