探索 JavaScript 的现代原语:BigInt 和 Symbol

探索 javascript 的现代原语:bigint 和 symbol

在不断发展的 javascript 世界中,引入了新功能来解决该语言的局限性,并为开发人员提供更强大的工具来构建应用程序。 bigint 和 symbol 原语就是两个这样的功能,它们都是在 ecmascript 2015 (es6) 及更高版本中引入的。这些类型为 javascript 带来了新功能,使开发人员能够处理大整数并轻松创建唯一标识符。

了解 bigint

javascript 中的 bigint 类型旨在表示大于 number 类型的安全整数限制(2^{53} – 1)的整数。 bigint 类型允许您处理超出此限制的数字而不损失精度,使其成为密码学、科学计算和金融应用程序用例的理想选择。

创建 bigint 值

创建 bigint 非常简单。您可以使用 n 后缀表示文字,或使用 bigint 构造函数表示字符串或数字:

// using the 'n' suffixconst bigint1 = 1234567890123456789012345678901234567890n;// using the bigint constructorconst bigint2 = bigint("1234567890123456789012345678901234567890");

bigint 操作

您可以使用 bigint 执行算术运算,就像使用常规数字一样,但有一些注意事项。 bigint 和 number 之间的运算需要显式转换:

const bigint = 100000000000000000000n;const num = 2;// additionconst sum = bigint + bigint(num); // 100000000000000000002n// multiplicationconst product = bigint * 3n; // 300000000000000000000n// divisionconst quotient = bigint / 2n; // 50000000000000000000n

bigint 的注意事项

禁止混合类型:您必须在 bigint 和 number 之间显式转换。没有小数:bigint 严格适用于整数。性能:由于开销,操作可能比使用 number 的操作慢。json 兼容性:bigint 无法直接序列化为 json。

理解符号

javascript 中的 symbol 类型表示一个唯一且不可变的值,可以用作对象属性的标识符。 符号在属性键需要唯一的情况下或者当您想要向对象添加元数据而不冒属性名称冲突的风险时特别有用。

创建符号

符号是使用 symbol() 函数创建的。每次调用都会返回一个唯一的符号:

const sym1 = symbol();const sym2 = symbol('description');console.log(sym1 === sym2); // false

在对象中使用符号

符号通常用作对象属性的键,提供一种私有属性的形式:

const sym = symbol('mysymbol');const myobject = {  [sym]: 'value'};console.log(myobject[sym]); // 'value'

符号不会出现在标准属性枚举中:

console.log(object.keys(myobject)); // []console.log(object.getownpropertysymbols(myobject)); // [ symbol(mysymbol) ]

众所周知的符号

javascript 包含众所周知的符号,允许您修改内置操作的行为:

立即学习“Java免费学习笔记(深入)”;

symbol.iterator:为对象定义自定义迭代。symbol.toprimitive:自定义类型转换。symbol.tostringtag:更改默认字符串描述。

自定义迭代示例:

const myiterable = {  *[symbol.iterator]() {    yield 1;    yield 2;    yield 3;  }};for (const value of myiterable) {  console.log(value); // 1, 2, 3}

全球符号注册表

可以使用全局符号注册表通过 symbol.for() 和 symbol.keyfor() 共享符号:

const globalSym1 = Symbol.for('globalSymbol');const globalSym2 = Symbol.for('globalSymbol');console.log(globalSym1 === globalSym2); // trueconsole.log(Symbol.keyFor(globalSym1)); // 'globalSymbol'

结论

bigint 和 symbol 原语显着增强了 javascript 的功能,提供了处理大整数和创建唯一属性键的解决方案。通过理解和利用这些现代原语,开发人员可以编写更强大、更灵活的代码,避免与传统数据类型相关的潜在陷阱。无论您是处理大数值还是需要唯一标识符,这些功能都是 javascript 工具包中不可或缺的工具。

以上就是探索 JavaScript 的现代原语:BigInt 和 Symbol的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1493244.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
清晰函数名称的力量:干净的代码必不可少
上一篇 2025年12月19日 15:31:40
使用html css和js的动画进行冒泡排序
下一篇 2025年12月19日 15:31:51

相关推荐

  • win10便签数据怎么备份_win10便签数据备份与恢复方法

    首先关闭便笺应用,通过文件资源管理器或运行命令进入%LocalAppData%PackagesMicrosoft.MicrosoftStickyNotes_8wekyb3d8bbweLocalState路径,复制Plum.sqlite文件进行备份;恢复时替换该文件即可还原数据。 如果您需要在重装系统…

    2026年8月30日
    100
  • 潍坊一小区近300户为何都选三翼鸟?

    准备入住新家的时候,挑选家电最费心,既要考虑跟装修风格匹配,又要考虑家电与橱柜尺寸,还纠结要不要选全屋智能……而潍坊华脉大宁府的住户就不用纠结这些,因为整个小区近300户全部选择的是三翼鸟场景方案,直接住进智慧家庭示范社区,具体是怎么回事呢? 6月28日,三翼鸟与华脉大宁府联合打造的潍坊市首个智慧家…

    2026年8月30日
    100
  • 轮播图循环切换闪动的原因及如何利用translate3d解决?

    轮播图循环切换闪动问题及解决方案 使用轮播图组件时,循环切换到首图时,尤其在用户频繁点击的情况下,常出现短暂闪动。本文针对基于translate3d动画的轮播图,分析闪动原因并提供解决方案。 问题根源在于循环切换(例如从最后一页到第一页)时,浏览器需要重新计算和渲染图片位置。如果用户操作频繁,浏览器…

    2026年8月30日
    000
  • swoole能干什么

    Swoole是一个高性能的异步事件驱动框架,它通过异步非阻塞I/O、协程和协程池、对WebSocket和HTTP/2协议的支持、集群和分布式机制以及丰富的扩展来构建高并发、低延迟的网络应用程序,特别适用于Web服务、即时消息、API网关、数据处理和网络协议处理场景。 Swoole 能做什么? Swo…

    2026年8月30日
    000
  • linux怎么下载安装软件?

    linux是一套免费使用和自由传播的类unix操作系统,是一个基于posix和unix的多用户、多任务、支持多线程和多cpu的操作系统。它能运行主要的unix工具软件、应用程序和网络协议。它支持32位和64位硬件。linux继承了unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。用…

    2026年8月30日
    100
  • win10蓝屏代码0x00000018如何办?

    一、准备工具 要应对win10出现的蓝屏错误代码0x00000018,我们需要提前准备一些必要的工具。建议下载并安装一款可靠的系统修复软件,例如“Windows Repair”或者“System Mechanic”。这类软件具备扫描和修复系统问题的功能,有助于解决蓝屏故障。 二、处理步骤 现在我们来…

    2026年8月30日
    000
  • 怎么查询mysql中所有表

    怎么查询mysql中所有表怎么查询mysql中所有表怎么查询mysql中所有表怎么查询mysql中所有表

    查询mysql数据库中所有表的方法:1、执行“mysql -u root -p”命令并输入密码来登录mysql数据库服务器;2、执行“USE 数据库名;”命令来切换到指定数据库;3、执行“show tables;”或“SHOW FULL TABLES;”命令,会以表格形式列出mysql数据库中的所有…

    2026年8月30日 用户投稿
    000
  • Spring Boot 2 中如何使用 Log4j2按API接口路径动态保存日志?

    Spring Boot 2 与 Log4j2:基于 API 接口路径的动态日志记录 本文介绍如何在 Spring Boot 2 应用中利用 Log4j2 实现动态日志记录,并根据 API 接口路径将日志保存到指定文件。 目标是解决如何将不同 API 接口的日志分别存储到不同目录下的问题,例如 /pa…

    2026年8月30日
    000
  • 天科合达与慕德微纳签署投资合同,共同出资成立合资公司

    2月21日,天科合达与慕德微纳在徐州达成战略合作,共同成立合资公司,专注于ar衍射光波导镜片技术。双方将强强联手,在技术研发和市场推广上展开深度合作,共同推进ar技术的创新和应用。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ (来源:天科…

    2026年8月30日
    000
  • 《巫师3》大型更新官宣延期!玩家在明年才能发挥创意

    今年5月,cdpr曾宣布《巫师3:狂猎》将为pc、xbox series x|s以及playstation 5平台引入跨平台模组支持,原计划随年内更新一同上线。然而,该功能的发布计划现已调整。 官方最新声明指出:“我们原本预计在2025年晚些时候推出面向PC、PS5和Xbox Series X|S的…

    2026年8月30日
    100
  • MySQL全文检索和第三方搜索引擎整合方案有哪些_优缺点分析?

    MySQL全文检索和第三方搜索引擎整合方案有哪些_优缺点分析?MySQL全文检索和第三方搜索引擎整合方案有哪些_优缺点分析?MySQL全文检索和第三方搜索引擎整合方案有哪些_优缺点分析?MySQL全文检索和第三方搜索引擎整合方案有哪些_优缺点分析?

    mysql 自带的全文检索功能在面对复杂搜索需求时存在明显不足,常见的整合方案包括 elasticsearch + mysql、sphinx + mysql 和 lucene/solr + mysql。1. mysql 全文检索缺点:仅支持基础分词和自然语言搜索,对中文支持弱,索引更新成本高,不支持…

    2026年8月30日 用户投稿
    000
  • 在 PHP 中为连续字符串姓名添加空格

    在 PHP 中处理姓名列表时,有时会遇到姓名连在一起的情况,例如 “NathanaelDousaMaxbergenRafaelSteen”。为了提高可读性,我们需要在每个姓名之间添加空格。本文将介绍如何使用 preg_replace 函数和正则表达式来实现这一目标。 preg…

    2026年8月30日
    000
  • 女主播为何每天播12个小时替榜一还钱?详情介绍

    女主播为何每天播12个小时替榜一还钱?详情介绍女主播为何每天播12个小时替榜一还钱?详情介绍女主播为何每天播12个小时替榜一还钱?详情介绍女主播为何每天播12个小时替榜一还钱?详情介绍

    近日,郑州的王女士向媒体反映,自己作为一名女主播,在直播时遇到了一位出手阔绰的“榜一大哥”,没想到,最终却反被这位“大哥”骗走了五万多元。 从豪爽打赏到线下见面 据王女士介绍,去年她在做主播时,直播间里来了一位非常“豪横”的大哥,经常守护着她,并为她刷礼物。仅仅一个星期的时间,她就从这位大哥的打赏中…

    2026年8月30日 用户投稿
    000
  • iphonex中切换全屏多任务的操作步骤

    php小编柚子分享一下iphone x中全屏多任务操作步骤。在iphone x中,取消了home键,因此多任务界面的操作方式也有所变化。现在,只需向上滑动一下底部的锁屏条,就可以进入多任务界面了。此时,你可以左右滑动浏览已打开的应用程序,也可以通过长按处于打开状态的应用程序来进行操作。按住某个应用程…

    2026年8月30日
    000
  • linux怎么卸载软件?

    linux怎么卸载软件? 1.软件的卸载主要是使用rpm来进行的。卸载软件首先要知道软件包在系统中注册的名称。键入命令: #rpm -q -a 即可查询到当前系统中安装的所有的软件包。 2. 确定了要卸载的软件的名称,就可以开始实际卸载该软件了。键入命令: #rpm -e [package name…

    2026年8月30日
    100
  • 世嘉将在东京开设全新门店 未来还要把店开到上海

    世嘉即将在日本东京开设一家全新门店:东京世嘉商店。 世嘉在社交媒体上宣布这一消息时并未透露具体细节,但新店预计将落户涩谷PARCO商业综合体,毗邻卡普空官方商店、宝可梦中心以及东京任天堂门店。 世嘉跨媒体业务负责人贾斯汀·斯卡彭去年曾表示,现在是时候让“世嘉品牌(而非仅仅是索尼克)走到消费者面前”。…

    2026年8月30日
    100
  • vivo浏览器怎么找到离线网页_vivo浏览器已保存离线网页的查看路径

    可通过“我的收藏”、下载记录或文件管理器查找vivo浏览器保存的离线网页。首先打开vivo浏览器,点击底部菜单进入“我的收藏”,查找带“已离线”标签的网页;若未找到,进入“下载记录”查看类型为网页或HTML的项目;若仍无法定位,可打开文件管理器,在内部存储的Android/data/com.bbk.…

    2026年8月30日
    100
  • 余承东展示鸿蒙AI超级智能体 能订机票、网上购物等

    近日,华为常务董事、终端bg董事长余承东在微博上发布了一段视频,展示了鸿蒙ai超级智能体的功能。视频中,余承东演示了即将推出的ai新功能:只需发出语音指令,小艺便能自动操作手机调用去哪儿、华为商城、华为视频等多个应用,完成订机票、购买手机、缓存视频等复杂任务,全程无需人工干预。该功能的核心在于跨应用…

    2026年8月30日
    100
  • 惠普主机系统蓝屏代码0x00000024的故障分析及修复教程

    惠普主机系统蓝屏代码0x00000024的故障分析及修复教程惠普主机系统蓝屏代码0x00000024的故障分析及修复教程惠普主机系统蓝屏代码0x00000024的故障分析及修复教程惠普主机系统蓝屏代码0x00000024的故障分析及修复教程

    蓝屏代码0x00000024通常由文件系统或硬盘问题引起,尤其在惠普主机上常见。1. 原因包括硬盘坏道、磁盘碎片过多、驱动冲突、系统文件损坏及预装软件不兼容;2. 建议进入安全模式卸载新驱动、关闭杀毒软件并运行sfc /scannow和chkdsk修复;3. 使用磁盘检查工具或crystaldisk…

    2026年8月30日 用户投稿
    100
  • 上周造车新势力销量排名公布 小鹏理想小米又是前三!

    2月25日,中国汽车市场数据新鲜出炉!上周(2月17日至2月23日)汽车总销量达37.4万辆,新能源汽车销量突破20.1万辆,新能源渗透率高达53.7%,创下今年新高。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 细看造车新势力销量榜,小…

    2026年8月30日
    100

发表回复

登录后才能评论
关注微信