JS中原始值和引用值的储存方式示例详解

原始值指的是代表原始数据类型的值,也叫基本数据类型,引用值指的是复合数据类型的值。接下来通过示例代码给大家介绍js中原始值和引用值的储存方式,感兴趣的朋友一起看看吧

在ECMAscript中,变量可以存放两种类型的值,即原始值和引用值

原始值指的是代表原始数据类型的值,也叫基本数据类型,包括:Number、Stirng、Boolean、Null、Underfined

引用值指的是复合数据类型的值,包括:Object、Function、Array、Date、RegExp

根据数据类型不同,有的变量储存在栈中,有的储存在堆中。具体区别如下:

原始变量及他们的值储存在栈中,当把一个原始变量传递给另一个原始变量时,是把一个栈房间的东西复制到另一个栈房间,且这两个原始变量互不影响。

引用值是把  引用变量的名称储存在栈中,但是把其实际对象储存在堆中,且存在一个指针由变量名指向储存在堆中的实际对象,当把引用对象传递给另一个变量时,复制的其实是指向实际对象的指针, 此时 两者指向的 是同一个数据,若通过方法改变其中一个变量的值,则访问另一个变量时,其值也会随之加以改变;但若不是通过方法 而是通过 重新赋值  此时 相当于 重新开了一个房间  该值的原指针改变  ,则另外一个 值 不会随他的改变而改变。

看示例:

var a="hello";var b=a;a="world";alert(a);//worldalert(b);//hellovar arr=[1,3];arr1=arr;arr.push(5);alert(arr)//1,3,5alert(arr1);//1,3,5arr=[7,8];alert(arr);//7,8alert(arr1);//1,3,5

登录后复制

用图来表示 结果如下:

原始变量的值互不影响,引用变量arr和arr1指向的为同一对象,所以当对arr通过方法改变其值时(堆房间里的数据发生变化),访问arr1的数据时就会访问到改变后的对象

JS中原始值和引用值的储存方式示例详解

通过非方法来改变引用变量的值时,会为该引用变量重新创建一个堆房间,此时指针也会发生变化:

JS中原始值和引用值的储存方式示例详解

总结:

Number、Stirng、Boolean、Null、Underfined这些基本数据类型,他们的值直接保存在栈中;

Object、Function、Array、Date、RegExp这些引用类型,他们的引用变量储存在栈中,通过指针指向储存在堆中的实际对象

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

AJAX XMLHttpRequest对象详解

Django框架利用ajax实现批量导入数据功能

编写轻量ajax组件第三篇实现

以上就是JS中原始值和引用值的储存方式示例详解的详细内容,更多请关注【创想鸟】其它相关文章!

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

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

(0)
上一篇 2025年3月8日 07:27:23
下一篇 2025年3月3日 06:02:43

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

相关推荐

  • 剖析Angular Component的源码示例

    本篇文章主要介绍了剖析angular component的源码示例,现在分享给大家,也给大家做个参考。 Web Component 在介绍Angular Component之前,我们先简单了解下W3C Web Components 定义 W…

    编程技术 2025年3月8日
    200
  • JS动画定时器知识总结

    这篇文章给大家总结了关于js动画中定时器的相关用法以及相关知识点总结,有需要的朋友可以参考学习下。 广义说:一切通过js改变的视觉呈现都叫动画;例如,按钮,链接等元素交互反馈。 狭义说:通过定时器连续调用js函数进行元素属性改变产生的视觉动…

    2025年3月8日
    200
  • 轻量级JS Cookie插件js-cookie的使用方法

    js-cookie插件是一个js操作cookie的插件,源文件只有3.34 kb,非常轻量级,js-cookie也支持npm和bower安装和管理,下面看看js-cookie的具体用法 Cookie是网站设计者放置在客户端的小文本文件,一般…

    编程技术 2025年3月8日
    200
  • 深入浅析Vue.js中 computed和methods不同机制

    这篇文章给大家介绍了vue.js中 computed和methods不同机制,在vue.js中,methods和computed两种方式来动态当作方法使用,文中还给大家提到了computed和methods的区别,感兴趣的朋友一起看看吧 在…

    编程技术 2025年3月8日
    200
  • 如何使用Vue+Nuxt.js 实现服务端渲染

    这次给大家带来如何使用Vue+Nuxt.js 实现服务端渲染,使用Vue+Nuxt.js 实现服务端渲染的注意事项有哪些,下面就是实战案例,一起来看一下。 直接使用 Vue 构建前端单页面应用,页面源码时只有简单的几行 html,这并不利于…

    2025年3月8日 编程技术
    200
  • JavaScript分步实现一个出生日期的正则表达式

    本文把出生日期分割成几个部分,分步地介绍了实现一个出生日期校验的完整过程。对出生日期正则表达式感兴趣的朋友参考下吧 简言 在表单验证中,经常会用正则表达式做出生日期校验。本文把出生日期分割成几个部分,分步地介绍了实现一个出生日期校验的完整过…

    2025年3月8日
    200
  • Vue.js中的computed工作原理

    这篇文章,我们通过实现一个简单版的和vue中computed具有相同功能的函数来了解computed是如何工作的。对vue.js中的computed工作原理感兴趣的朋友一起学习吧 JS属性: JavaScript有一个特性是 Object.…

    编程技术 2025年3月8日
    200
  • 基于JavaScript实现幸运抽奖页面

    这篇文章主要为大家详细介绍了基于javascript实现幸运抽奖页面,具有一定的参考价值,感兴趣的小伙伴们可以参考一下  JS实现简单的幸运抽奖页面,供大家参考,具体内容如下  效果图: 图片素材 : 代码如下,复制即可使用: 立即学习“J…

    2025年3月8日
    200
  • JS中的回调函数实例浅析

    这篇文章主要介绍了js中的回调函数,结合实例形式简单分析了javascript回调函数的感念、功能、使用方法及相关注意事项,需要的朋友可以参考下 本文实例讲述了JS中的回调函数。分享给大家供大家参考,具体如下: 在说回调函数之前,不妨先看一…

    编程技术 2025年3月8日
    200
  • JS实现为动态添加的元素增加事件功能示例

    这篇文章主要介绍了js实现为动态添加的元素增加事件功能,结合实例形式分析了javascript基于事件委托实现针对动态添加的元素增加事件的相关操作技巧,需要的朋友可以参考下 本文实例讲述了JS实现为动态添加的元素增加事件功能。分享给大家供大…

    2025年3月8日
    200

发表回复

登录后才能评论