掌握这10个JavaScript新的特性,让编写的代码既干净又有趣

JavaScript 开发者必知的 ES2024 九大新特性 ES2024 带来了许多令人兴奋的新特性,毫无疑问地将改变你编写 JavaScript 的方式。从增强的模式匹配和资源管理到更好的错误处理和模块加载,这些补充使得 JavaScript 更加强大、高效,也更友好。通过采用这些特性,你可以编写更简洁、更易于维护的代码。 阅读详情

JavaScript 不断升级迭代,越来越多的新特性让我们的代码写起来干净有趣,在这篇文章中我们介绍了 10 个新特性。

1.字符串.原型.replaceAll

replaceAll()返回一个新字符串,其中模式的所有匹配项都被替换项替换。模式可以是字符串或正则表达式,替换项可以是字符串或为每次匹配执行的函数。

let str = '我喜欢苹果,我有时会吃苹果';
let newStr = str.replaceAll('苹果', '橘子');

console.log(newStr);

/**** 输出 ****/
//我喜欢橘子,我有时吃橘子

2.使用“BigInt”支持大数计算

JS中的MAX_SAFE_INTEGER” 计算超过“Number.

let v = Math.pow(2, 55) === Math.pow(2, 55) + 1 // true
console.log(v);
let v2 = Math.pow(2, 55);  
console.log(v2); //36028797018963970

let v3 = Math.pow(2, 55) + 1;  
console.log(v3);   //36028797018963970

使用“BigInt”可以完全避免这个问题:

BigInt ( Math . pow ( 2 , 55 )) === BigInt ( Math . pow ( 2 , 55 )) + BigInt ( 1 ) // 假

3.使用“Object.hasOwn”而不是“in”运算符

有时我们想知道一个属性是否存在于一个对象上,我们通常使用“in”运算符,但这是有缺陷的。

in如果指定的属性位于对象或其原型链中,则运算符返回 true:

const Person = function (age) {
 this.age = age
}
Person.prototype.name = 'Lily'

const p = new Person(24)
console.log('age' in p) // true
console.log('name' in p) // true

Object.hasOwn

let object = { age: 24 }
Object.hasOwn(object, 'age') // true
let object2 = Object.create({ age: 24 })
Object.hasOwn(object2, 'age') // false  
let object3 = Object.create(null)
Object.hasOwn(object3, 'age') // false

4.数字分隔符

新引入的值分隔符使用 _(下划线)字符来分隔值组,使它们更易于阅读!

let count = 1_000;
let number = 1_000_000;
let account = 1_000.0_001;

5. String.prototype.trimStart() / String.prototype.trimEnd()

String.prototype.trim()用于去除头部和尾部的空格、换行等,现在头部和尾部分别由 控制trimStart(),trimEnd(). trimLeft(), trimRight()是它们的别名。

let str = ' Hello JavaScript ';
str.trimLeft();
//'Hello JavaScript '
str.trimRight();
//' Hello JavaScript'

6. Array.prototype.flat() / Array.prototype.flatMap() 方法

展平数组是 Array 原型的一项新功能,它允许您通过传入级别深度参数(默认值为 1)来提高较低数组的级别。如果你想提高所有级别,你可以写一个更大的数字,但不建议这样做。该flatMap()方法首先使用 map 函数映射每个元素,然后将结果展平到一个新数组中。

const a1 = [1, 2, [3, 4]].flat();
console.log(a1);  // [1, 2, 3, 4]
   
const a2 = [1, 2, [3, 4, [5, 6]]].flat(2);
console.log(a2); // [1, 2, 3, 4, 5, 6]

const a3 = [1, 2, 3, 4].flatMap(v => [v, v * 2]);
console.log(a3);  // [1, 2, 2, 4, 3, 6, 4, 8]

7.将catch参数改为optional

在 try...catch 错误处理期间,如果没有向 catch 传递参数,代码将报告错误。在新规范中,可以省略 catch 绑定参数和括号。

try{
return true;
}catch{
return false;
}

8.空合并运算符(???)

当左操作数为 null 或未定义时,它返回右操作数。否则,它返回左边的操作数。

const str = null ?? 'default string';
console.log(str);
// expected output: "default string"

const num = 0 ?? 42;
console.log(num);
// expected output: 0

/** Note
* Unlike the logical or (||) operator, the logical or returns the right-hand operand if the left operand is false, e.g. '' or 0
*/

9. 可选链运算符 (?.)

如果您访问对象上不存在的属性的属性,请使用 . 运算符将使用 ? 直接报告错误。返回未定义

let obj = {};
console.log(obj.person.name)
// Cannot read properties of undefined (reading 'name')

console.log(obj.?person?.name)
// expected output:undefine

10. 对象.fromEntries()

Object.entries将对象转换为[key, value]键值对。object.fromEntries()用于将键值对缩减为对象结构。

   const entries = [['name', 'maxwell']];
   console.log(entries);
````const object = Object.fromEntries(entries);
   console.log(object);

对你有用吗?如果有用,记得点赞支持哦!

如果你才开始学前端,可以看看,我们这里有html+css阶段完整教程,我们在钉钉群里有全套的课程包含(入门到精通课程、4个综合项目(称之为15天训练营,在群里是从第二十三节课开始的)、30个练习案例!)可以从这里来看!



JavaScript的11个令人赞叹的新特性 最近的ECMAScript 2015(ES6)标准引入了许多令人兴奋的新功能,而在随后的版本中,ES13(或ES2022)继续为JavaScript带来了一些令人赞叹的新特性。在本文中,我们将介绍ES13中的11个令人赞叹的新特性,并提供相应的源代码示例。这些是ES13中令人赞叹的11个新特性。它们为JavaScript开发人员提供了更多强大和灵活的工具,以提高开发效率和代码可读性。希望本文能帮助你了解这些新特性,并在你的JavaScript项目中发挥作用。JavaScript的11个令人赞叹的新特性。 阅读详情

相关推荐

Windows非分页缓冲池内存泄漏实战:PoolMon与RAMMap高效排查指南

本文详细介绍了Windows系统中非分页缓冲池内存泄漏的实战排查方法。当系统出现卡顿且内存占用异常增长时,通过RAMMap工具快速定位非分页缓冲池异常,并利用PoolMon监控内核内存分配标签,精准锁定泄漏源。文章提供了从确认症状、安装工具到使用findstr命令溯源驱动文件的完整五步排查流程,并总结了常见泄漏标签与解决方案,帮助用户高效解决深层系统内存问题。

weixin_28455801的博客 1012

JavaScript新特性

回调函数是一种函数,它作为参数传递给另一个函数并在后者执行完成或达到特定条件时被调用执行,这允许我们在需要的时候执行一些操作,而不必等待同步代码块的执行完毕//假设存在:函数x、函数y|x是y的回调函数//就是:将函数x,作为参数传递函数yy(x,...){//执行函数,//在特定的位置执行x() 函数;//如果x函数需要参数,可以定义在...也在y()函数中一起传递过来;//定义X函数: 用于加法运算;//定义y函数: 作为计算器验证判断参数是否是数值;

慈様 2732

突破III-V/硅混合集成的挑战:UTC光电探测器能带工程仿真实践

本文探讨了UTC光电探测器在III-V/硅混合集成中的能带工程仿真实践,通过Ansys Lumerical平台实现多物理场仿真,解决晶格失配和能带不连续性等关键挑战。文章详细介绍了FDTD光学仿真和CHARGE电学仿真方法,优化器件性能,提升响应度和带宽,为高速光通信和量子计算提供技术支持。

weixin_29219539的博客 297

JavaScript es6-学习笔记-(自用)

es6 ECMA介绍,名称 let const 1. let 命令 let声明的变量只在所处的块级有效,var不具有这个特点 for循环:循环变量是一个父作用域,而循环体内部是一个单独的子作用域。 没有变量提升 暂时性死区 只要块级作用域内存在let命令,不再受外部的影响。 即使用let命令声明变量之前,该变量都是不可用的 var tmp = 123; if (true) { tmp = 'abc'; // ReferenceError let tmp; } 规定暂时性死区和let、co

weixin_47180815的博客 984

CentOS7全隔离环境部署Nvidia Tesla A100 40G驱动与CUDA工具包实战

本文详细介绍了在CentOS7全隔离环境下部署Nvidia Tesla A100 40G显卡驱动与CUDA工具包的实战经验。通过构建本地YUM仓库、解决驱动依赖问题以及三重验证法,确保Tesla A100与CUDA 11.7的完美兼容。同时分享了Anaconda3离线部署技巧,帮助用户在隔离环境中高效搭建Python GPU开发环境。

weixin_27215337的博客 403

施耐德EcoStruxure平台深度体验:IEC 61499在智慧物流中心的真实应用案例解析

本文深度解析施耐德EcoStruxure平台在智慧物流中心的应用,重点探讨IEC 61499标准如何通过分布式控制和功能块技术重构自动化逻辑。通过上海某物流中心的真实案例,展示了该平台在提升系统弹性、降低停机成本方面的显著成效,为工业自动化转型提供实践参考。

weixin_30576827的博客 66

肝了万字长文,汇总2024年JavaScript最新特性!

JavaScript是现代Web开发中的核心语言,它已经演变成前端和后端应用的基础。在本文中,我们将探索2024年JavaScript提供的现代特性,所有内容都附有详细示例。

2301_79969095的博客 1735

基于Python+OpenCV中文及符号检测

一、项目背景与意义在图像处理、文档识别、自动翻译等场景中,中文及符号的准确检测是一个重要且复杂的任务。传统的字符检测方法往往对英文等拉丁字母系的识别效果较好,但对中文及特殊符号的识别准确率较低。本项目旨在利用Python编程语言结合OpenCV库,开发一个能够高效、准确地检测图像中中文及符号的系统,为相关领域的研究和应用提供技术支撑。二、技术实现图像预处理:利用OpenCV的图像处理功能,对输入的图像进行灰度化、二值化、滤波去噪等预处理操作,以提高中文及符号检测的准确性[1]。

2301_79809972的博客 1120

JS代码的10条规则

首先如何编写干净得代码,这是一个有争议的问题,答案也是众说纷纭,但总的来说,干净代码指的是易于阅读、理解和维护的代码。遵循最佳实践和行业标准,使得我们能够轻松编写干净代码,避免臃肿、冗余和复杂性。今天我们要分享的就是这些最佳实践。

hello.reader 1040

Coze 打通飞书多维表格,实现数据增删改查操作实战详解

基于Coze 打通飞书多维表实现数据录入系统实战详解

congge 5782

机器学习之多种算法优缺点总结及优化方法

一、无监督算法: 1、聚类算法:Kmeans 2、关联规则算法:Apriori 二、有监督算法 1、分类算法 决策树(Decision Tree) 支持向量机(SVM) K近邻(kNN,k-NearestNeighbor) 朴素贝叶斯 逻辑回归 2、回归算法 线性回归 多项式回归 3、集成算法 a、bagging(Bootstrapped Aggregation) 随机森林 ...

平原的博客 7081

10 个让 Web 开发更有趣的 Marko.js 核心特性

Marko.js 是一个基于声明式 HTML 的开源前端框架,它让构建 Web 应用变得简单而有趣。作为一款高性能的 UI 库,Marko.js 结合了简洁的语法、高效的渲染机制和强大的组件化能力,适合从简单页面到复杂应用的各种场景。本文将介绍 Marko.js 的核心优势和实用功能,帮助你快速上手这个令人惊喜的前端工具。 ## Marko.js 的工作原理 Marko.js 的核心在于其高效

gitblog_00805的博客 432

【100%通过率】华为od机试C卷【出差 / 员工派遣】Java&Go 实现

某公司部门需要派遣员工去国外做项目。现在,代号为 x 的国家和代号为 y 的国家分别需要 cntx 名和 cnty 名员工部门每个员工有一个员工号 (1,2,3,......),工号连续,从 1开始。部长派遣员工的规则:

MISAYAONE的博客 2642

JavaScript 中那些有趣的知识点

JavaScript 中还有许多像这样有趣又实用的知识点,不断探索这些特性,不仅能让我们写出更优雅、高效的代码,还能让我们在编程过程中收获更多乐趣。这是因为 setTimeout 是异步任务,会被放到任务队列中,只有当同步任务执行完,调用栈为空时,才会从任务队列中取出 setTimeout 的回调函数执行。简单来说,事件循环会不断检查调用栈和任务队列。有趣的是,在进行类型判断时,typeof null 会返回 "object" ,这其实是 JavaScript 早期的一个设计缺陷,一直保留到现在。

Cc040909的博客 959

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

js 跳出循环_【前端词典】4 个实用有趣的 JS 特性

前言最近在学习的过程中发现了我之前未曾了解过的一些特性,发现有些很有趣并且在处理一些问题的时候可以给我一个新的思路。这里我将这些特性介绍给大家。4 个有趣的 JS 特性利用 a 标签解析 URL有的时候我们需要从一个 URL 中提取域名,查询关键字,变量参数值等,一般我们会自己去解析 URL 来获取这些内容。可是你或许不知道还有更简单的方法。即创建一个 a 标签将需要解析的 URL 赋值...

weixin_39867708的博客 132

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

如何编写一致风格的JavaScript代码:idiomatic.js规范10大黄金法则

在JavaScript开发中,代码规范是确保项目可维护性和团队协作效率的关键。idiomatic.js作为一份专注于编写一致、地道JavaScript代码的指南,为开发者提供了全面的风格建议。本文将深入解析idiomatic.js的10大核心原则,帮助你写出更专业、更易读的代码。 ## 1. 空白规范:奠定代码可读性基础 空白使用是代码风格的基础,直接影响代码的可读性。idiomatic.js

gitblog_00224的博客 341

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Documentation.js 项目中的代码文档编写指南

Documentation.js 项目中的代码文档编写指南 前言 Documentation.js 是一个强大的 JavaScript 文档生成工具,它能够从代码注释中自动生成美观且结构化的文档。本文将深入探讨如何为不同 JavaScript 特性编写规范的文档注释,帮助开发者充分利用 Documentation.js 的功能。 ES6 类的文档编写 ES6 类语法为 JavaScript 带来了...

gitblog_00789的博客 472

ES6至ES10新特性一览:JavaScript进阶利器

ES6至ES10新特性一览:JavaScript进阶利器 去发现同类优质开源项目:https://gitcode.com/ ES6至ES10新特性一览:项目的核心功能/场景,涵盖JavaScript新特性,助力开发者提升编程效率。 项目介绍 在现代Web开发中,JavaScript作为核心技术之一,不断进化与发展。ES6至ES10新特性一览项目,正是为开发者提供的一份全面了解JavaScript新...

gitblog_06718的博客 709

终极idiomatic.js语法美化指南:编写优雅JavaScript代码的10个秘诀

在JavaScript开发中,编写一致且符合习惯的代码不仅能提升可读性,还能显著提高团队协作效率。**idiomatic.js**作为一份专注于JavaScript代码风格的权威指南,为开发者提供了系统化的规范。本文将深入解析该指南的核心原则,帮助你掌握编写优雅JavaScript代码的10个关键秘诀,让你的代码既专业又易于维护。 ## 1. 统一空格规范:奠定代码可读性基础 代码中的空格使用看

gitblog_00193的博客 715

一些有趣的代码段

有(想)趣(死)的代码 数据类型及变量声明 代码: 思考下面 console.log 语句打印内容 var u = undefined; if(typeof u === 'object'){ var str = 'Hello World'; } console.log(str); var n = null; if(typeof n === 'object'){ var str =...

eno的博客 6689

Js2Py扩展开发:如何为翻译器添加新的JavaScript特性支持

Js2Py是一个纯Python实现的JavaScript到Python翻译器和解释器,它允许开发者在Python环境中运行JavaScript代码。本文将详细介绍如何为Js2Py翻译器添加对新JavaScript特性的支持,帮助开发者扩展这一强大工具的功能。 ## 了解Js2Py翻译器架构 Js2Py的翻译核心位于`js2py/translators/translator.py`文件中,该模块

gitblog_07544的博客 438

Javascript有趣特性

对象属性的引用 感兴趣的同学可以复制以下代码到devtools的console运行一下,你会发现,userName 不会跟随obj的userName的属性值变化;而age会随着obj的age属性变化。 let obj = {userName: "hanger", age: 20}; let userName = obj.userName; let age = obj.age; Object.defineProperty(obj, "age", { enumberable: true, configur

前端工程师 206

探索有趣的Node.js世界:Funny-Node

探索有趣的Node.js世界:Funny-Node 在编程的世界里,乐趣与实用性并存是一种难得的体验。今天我们要介绍的开源项目——,就是一个结合了这两点的Node.js库。它不仅展示了Node.js的强大功能,同时也为开发者带来了一些意想不到的乐趣。 项目简介 Funny-Node是由LessFish开发的一个Node.js模块,其主要目标是提供一系列有趣、实用的小工具和函数。这些小工具覆盖了各种...

gitblog_00018的博客 484

JS 中有趣的事实

原文:dev.to/shafikshaon… 译者:前端小智 为了保证的可读性,本文采用意译而非直译。 想阅读更多优质文章请猛戳GitHub博客,一年百来篇优质文章等着你! 使用 JS 有很多有趣的地方。尽管工程师们每天都在与之打交道,但仍有一些语言没有被开发出来。本广将介绍一些你可能想不到的JS特性。 NaN 是一个 number 类型 NaN是一个 number 类型。 而且,NaN 不等...

weixin_30298497的博客 113

[CoffeeScript]以优美方式编写JavaScript代码

我用JavaScript 编程很多年了,写了大量的JS代码,即便是我这样的经历,但我仍然还在努力地去写出更优美的JS代码,在这篇文章中,我将探索为什么写出漂亮的JS代码是如此困难,如何使用CoffeScript(一种简约且能编译成JS的语言)改善它。什么是优美的代码?我想从个人观点来声明如何定义优美代码1、优美的代码是使用更少的代码解决问题;2、优美的代码是可读而且易理解的3、优美的代码是一段

Sunface撩技术 2032

Feature.js-轻量级浏览器特性检测JavaScript库插件

简要教程 Feature.js是一款轻量级的浏览器特性检测JavaScript库插件。该插件运行速度快,使用简单,文件只有1kb大小。通过Feature.js你可以检测客户浏览器是否支持某些特性,并针对这些特性编写代码。 Feature.js会自动在页面初始化时进行加载,但是它不会自动进行特性检测,直到你在代码中调用它时才会进行指定特性的检测。 通过Feature.js你可以对浏览...

azun31128的博客 361
上一篇: 一个适合前端入门轻松上手的JavaScript教学
下一篇: 图解实例讲解JavaScript算法,让你彻底搞懂
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值