JavaScript 值与引用

javascript 值与引用

了解 JavaScript 中如何保存变量:作为值或引用

在 JavaScript 中,或者更确切地说,在编程中,变量是计算机内存中用于存储数据的位置。变量被声明(给定名称、标识符),并且可以立即或稍后分配一个值,具体取决于语言。然后可以在程序中稍后引用该变量,而不是再次明确地声明相同的值。

在 JavaScript 中,数据以值的形式传递,这些值可以是原始值或对象值。作为一名 JavaScript 开发人员,了解 JavaScript 如何处理数据对于拥有扎实的语言基础至关重要。

原始值包括:

弦.数字.布尔值.BigInt.符号.未定义。

另一方面,对象值是:

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

数组。功能.物体.

这些值类型在传递时表现不同,请考虑下面的代码片段:

var myName = “Fred”;
var otherName = myName;
myName =“阿什利”;
console.log(我的名字); //阿什利
console.log(其他名称); //弗雷德

请注意,otherName 保持不变,尽管它看起来像是 myName 的“副本”。事实上,实际发生的情况是,当 otherName 被分配给 myName 时,它​​并没有被分配为字符串“Fred”的副本,而是创建了一个新字符串“Fred”。因此,myName 和 otherName 之间没有直接链接。这就是 JavaScript 传递原始值的方式。

对象值的处理方式不同,请看下面的代码片段:

var myObj = {颜色:“红色”};
var otherObj = myObj;
myObj.color = “蓝色”;
console.log(myObj.color); //蓝色
console.log(otherObj.color); //蓝色

这里,创建了对象并将其分配给 myObj,然后将其分配给 otherObj,看看如何仅通过更改 myObj 的颜色属性来更改 otherObj 和 myObj 颜色属性。这是因为对象值作为引用传递。 myObj 不直接引用该对象,而是指向其引用,然后将 otherObj 分配给 myObj,它是对真实对象的引用。因此,两个变量都链接到同一个对象,因为它们指向相同的引用,其中一个变量的更改会影响另一个变量。

这就是为什么两个对象的比较(===)直接返回 false,你实际上是在比较两个不同的引用。这里, myObj === otherObj 返回 true,因为我们正在比较相同的引用。

我希望这能让您对 JavaScript 在幕后如何工作有一个全新的视角。

在那之前,请保持没有错误。

以上就是JavaScript 值与引用的详细内容,更多请关注【创想鸟】其它相关文章!

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

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2673589.html

(0)
上一篇 2025年3月7日 13:43:00
下一篇 2025年3月6日 23:49:30

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Typescript 编码编年史:可以放置鲜花

    问题陈述: 你有一个长长的花坛,其中有些地块种植了,有些则没有。但是,相邻的地块不能种花。 给定一个包含 0 和 1 的整数数组花坛,其中 0 表示空,1 表示非空,以及一个整数 n,如果可以在花坛中种植 n 朵新花而不违反无相邻花规则,则…

    2025年3月7日
    200
  • 长时间中断后重新开始编码

    10 print “David is great! ”;20 goto 10run 登录后复制 1980 年,我在计算机中输入的第一条重要的 2 行程序和简单的命令。我的祖母在夏天从她任教的学校借了一台 commodore pet 计算机,…

    2025年3月7日
    200
  • Redux VS Redux 工具包 && Redux Thunk VS Redux-Saga

    简介 在现代 web 开发中,尤其是 react,有效管理状态对于构建动态、响应式应用程序至关重要。状态表示可以随时间变化的数据,例如用户输入、获取的数据或任何其他动态内容。如果没有适当的状态管理,应用程序可能会变得难以维护和调试,从而导致…

    2025年3月7日
    200
  • 使用 Vercel AI SDK 实现多个并行 AI 流

    vercel ai sdk 可以轻松与 openai、anthropic 等 llm api 进行交互,并传输数据,以便在加载时快速显示在您的 web 应用程序中。在本文中,我们将学习如何同时运行多个提示并并行查看它们的结果。 tl;dr:…

    2025年3月7日
    200
  • Typescript 编码编年史:字符串的最大公约数

    问题陈述: 对于两个字符串 s 和 t,当且仅当 s = t + t + t + … + t + t (即 t 与自身连接一次或多次)时,我们才说“t 除 s”。 给定两个字符串 str1 和 str2,返回最大的字符串 x,使…

    2025年3月7日
    200
  • 包裹作为捆绑商的好处

    包裹的好处 开发工具HMR – 热模块更换 —>> 如何 – 通过使用 C++ 编写的文件监视算法来跟踪您的代码并尽快 您尝试保存文件,它会使用新代码刷新服务器本地服务器http://loca…

    2025年3月7日
    200
  • Typescript 编程编年史:拥有最多糖果的孩子

    问题陈述: 有 n 个拿着糖果的孩子。给你一个整数数组 candies,其中每个 candies[i] 代表第 i 个孩子拥有的糖果数量,以及一个整数 extracandies,表示你拥有的额外糖果数量。 返回一个长度为 n 的布尔数组结果…

    2025年3月7日
    200
  • JavaScript 可以创建一个非凡的命理学网站

    过去四年我一直担任 javascript 开发人员,并为我的客户开发了多个行业网站。最近,我在一个数字命理学网站上工作,当我在该网站上工作时,我的思维完全被震撼了。在这篇文章中,我分享了我在命理学网站上工作的经历。 首先,我想告诉你,在命理…

    2025年3月7日
    200
  • 在 TypeScript 代码上启用的基本标志

    介绍 typescript 是一个强大的工具,它将静态类型引入 javascript,为构建可扩展和可维护的应用程序提供了坚实的基础。为了最大限度地发挥 typescript 的优势,启用某些增强类型安全性和代码质量的编译器选项标志至关重要…

    2025年3月7日
    200
  • 了解 CSS 框架

    CSS 框架通过提供预先编写的、可重用的代码模块来设计网页样式,彻底改变了网页设计。这些框架提供了一种结构化、有组织的方式来创建美观且响应灵敏的网站,而无需从头开始编写 CSS。 CSS 框架的主要特性网格系统:大多数 CSS 框架都带有内…

    2025年3月7日
    200

发表回复

登录后才能评论