当前位置: 首页 > news >正文

宜兴网站制作沈阳妇科大夫排行

宜兴网站制作,沈阳妇科大夫排行,荣耀手机官网,广州注册公司网站一:什么是引用传递 引用传递是相对于值传递的。那什么是值传递呢?值传递就是在传递过程中再复制一份,然后再赋值给变量,例如: let a 2; let b a;在这个代码中,let b a; 就是一个值传递,首先…

一:什么是引用传递

引用传递是相对于值传递的。那什么是值传递呢?值传递就是在传递过程中再复制一份,然后再赋值给变量,例如:

let a = 2;
let b = a;

在这个代码中,let b = a; 就是一个值传递,首先它将a的值复制下来,再赋值给b,最终这里的 a 和 b 指向的是两块儿内存空间;那什么又是引用传递呢?引用传递就是两个变量没有独立的内存空间,它们指向的是同一块儿内存空间。

二:js里面有引用传递吗?

结论:在es6模块化之前,js是没有严格意义上的引用传递的。

有人可能会说,怎么会没有呢,赋值对象的时候不是用的引用传递吗?事实上,js里面赋值对象时同样是值传递,代码如下:

let a = {num: 0
}
let b = a;
b.num = 2
console.log(a.num)   // 2

以上代码看上去好像 a 和 b 指向的同一块儿地址,修改了 b 以后 a 也改了,但是这其实不是引用传递。我们都知道,js存储对象时,真实数据都存储在栈里面,a的值其实是一个指向对象的地址,而执行 let b = a;时,其实是将a存储的地址复制了一份给b,看起来是修改的 b 的值,其实修改的是b指向的栈里面的值,而 a 也指向这个空间,所以 a.num 变化了,但是对于a和b本身是没有影响的。而如果是引用传递,那么当我执行 b = 2 时,a也会等于2,这才是二者指向同一块儿空间。

三:哪里有引用传递

引用传递在es6之前时完全没有的,在es6中,只有在模块化的时候的 export 和 import 是用的引用传递,代码如下:

export let a = 1;
setTimeout(()=>{a = 2;
},1000)

这个代码很简单,就是到处一个a的变量,并且在1秒后改变它的值,按照一般的想法来看,这个修改应该是不会影响到其他导入这个a的文件的,但是事实上,它是会修改的,代码如下:

import { a } from 'xxx'
console.log(a);   // 1
setTimeout(()=>{console.log(a)  // 2
},1500)

最后的结果如下,在这个文件里面改了a的值以后,也影响到了其他导入的文件
打印结果

四:作用

讲了这么多,那这个东西有什么用吗?这东西用处不大,就有一点需要注意,就是当多个敌方都引用一个的时候,一个地方修改了,其他地方都会修改,偶尔可能会导致一些bug出现

http://www.yayakq.cn/news/18753/

相关文章:

  • 购物网站开发实战公司网页制作培训试题
  • 网站设计模板含数据库建网站大公司
  • 越南语网站怎么做如何增加网站反链
  • 服务网站备案网页游戏排行2020前十名
  • 做网站需要给设计提供2021年世界500强企业排名
  • 网站做平台商城网站中商品模块有哪些功能
  • wordpress安装插件导致网站哪里有建设公司官网
  • 建设网站难吗网站开发所需的知识
  • 公司网站如何建设wordpress 替换图片
  • nodejs 如何做网站后端蓝领网站做的最好
  • 网站建设小企业案例张家港网站制作服务
  • 网站建设业务渠道如何作做网站
  • 清远城乡住房建设部网站网站ui设计方案
  • 网站开发项目需要什么人员垫江网站建设报价
  • 青海建设厅网站淘宝关键词查询工具哪个好
  • 网站建设免费域名网站上动画视频怎么做
  • 公司网站开发费用计入哪个科目wordpress仪表盘访问不了
  • 广州网站建设设计哪家好广州建设厅电工网站
  • 南京宜电的网站谁做的制作公司网页
  • 定制网站 北京搭建网络平台的计划书
  • 校园网门户网站建设网站建设的收获体会
  • 免费单页网站建设手机制作app工具
  • 做民宿要给网站多少合同钱国外metro风格网站模板
  • 2018年网站开发技术购物网站开发设计类图
  • 给公司做网站 优帮云企业网站seo推广方案
  • wordpress 建站 电子书商业网站域名后缀
  • 外包网站开发价格大连百度推广seo
  • 网站流量分析系统建设银行集团网站
  • 做网站专题需要什么软件公司网站建设合同
  • 网站开发用的电脑千部小黄油资源百度云