ES6数据传递的传值和传址

关于传值和传址先看一下代码段!

var a=5;
var b=a;
a=8;
console.log("a:"+a)
console.log("b:"+b)
console.log('------------------------------------------');
var obj={
	x:1,
	y:2
}
var test=obj;
test.y=222;
console.log("obj.x="+obj.x)
console.log("obj.y="+obj.y)
console.log("test.x="+test.x)
console.log("test.y="+test.y)

看一下控制台结果:

看一下上面一段代码,通过正常的理解确实这个样子,但是下面的代码我们只改变了test.y值而obj的也随之改变!这个样子是用于前一部分是传值,后面是传地址!    

传值:相当于把数值进行复制一遍,而传地址相当于把真实地址进行操作!

简单来说传值相当于在服务器上有个页面,把它可乐一份给你你进行修改,不影响服务器的结果,而传址则是直接在服务器开通了权限给另外一个人进行直接对这个数据操场,因此不过是谁对这个数据进行操作,都将改变!

传值适用于单一类型(Undefined,String,Number,Boolean,Unll),传址适用引用类型(Object)

注意虽然引用类型包含Object和Symbol,但是Symbol用于创建唯一的量,因此是没有意义的!

小结:单一类型赋值是传值,而引用类型是传址,但是在模块化,不管是引用类型还是大一类型,数据传输都是传地址,看一下下面的代码段!

模块文件a.js

 var a=0;
 
 setInterval(()=>{
     a=2
 },2000)
 export {a}

引入模块 b.js

import {a} from "./a.js";
console.log(a);//2

setInterval(()=>{
  console.log(a);//4
},4000)

很明显这样的结果不是我们认为的普通传值,如果是传值则这个a是0则无法改变,很明显传址,当模块的a改变了,这边也是改变了!这是一个传址。得出结论在模块化引用其他模块,无论是单一类型还是引用类型数据传输都是传址方式!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏思考的代码世界

Python基础学习08天

1494
来自专栏北京马哥教育

Python老司机也会翻车!10个最容易犯的Python开发错误

? Python是一门简单易学的编程语言,语法简洁而清晰,并且拥有丰富和强大的类库。与其它大多数程序设计语言使用大括号不一样 ,它使用缩进来定义语句块。 在平...

3838
来自专栏Python小白进阶之旅

Python数据类型:双端队列deque-比列表list性能更高的一种数据类型

说到容器类型,大家第一时间想到的多半是list,而list确实也能解决大部分的需要,但碰到列表内的数据量相当大的时候,性能问题就显得尤为重要;再或者列表被恶意注...

1323
来自专栏Zephery

工厂模式

工厂模式 目录 何为工厂模式 工厂方法与抽象工厂 如何在Java EE中通过@Producers与@Inject注解实现工厂模式 如何创建自定义注解以及通过@Q...

41411
来自专栏Kirito的技术分享

警惕不规范的变量命名

就在最近,项目组开始强调开发规范了,今天分享一个变量名命名不规范的小案例,强调一下规范的重要性。 Boolean变量名命名规范 16年底,阿里公开了《Java...

3299
来自专栏用户2442861的专栏

JSON 入门指南(IBM)

尽管有许多宣传关于 XML 如何拥有跨平台,跨语言的优势,然而,除非应用于 Web Services,否则,在普通的 Web 应用中,开发者经常为 XML 的...

831
来自专栏三丰SanFeng

Linux64位程序移植

1 概述 Linux下的程序大多充当服务器的角色,在这种情况下,随着负载量和功能的增加,服务器所使用内存必然也随之增加,然而32位系统固有的4GB虚拟地址空间限...

2507
来自专栏技术记录

通讯协议序列化解读(一) Protobuf详解教程

前言:说到JSON可能大家很熟悉,是目前应用最广泛的一种序列化格式,它使用起来简单方便,而且拥有超高的可读性。但是在越来越多的应用场景里,JSON冗长的缺点导致...

944
来自专栏肖洒的博客

Java面试笔记

Java最重要的特点就平台独立,平台独立意味着可以在一个系统编译它然后在另一个系统使用它。

872
来自专栏Java面试通关手册

深入理解原型模式 ——通过复制生成实例

Java面试通关手册(Java学习指南,欢迎Star,会一直完善下去,欢迎建议和指导):https://github.com/Snailclimb/Java_G...

1803

扫码关注云+社区