computed:

show me the code

computed : {foo() {

if(this.a>0){ return this.a}

else { return this.b + this.c }

}

}

data() {a: 1,

b: 1,

c: 1,

}

计算属性会缓存上一次的计算结果,强调:是上一次而不是所有历史;

每次调用this.foo,是返回上一次的结果还是执行foo函数返回最新的结果?

是靠computed的响应式构造器内部的变量dirty控制,dirty为true就执行foo,返回最新的结果,否则就返回缓存的值,并且每次执行foo以后,都会把dirty还原为false

也就是说 dirty 控制了是否从缓存里读取值,那么什么时候dirty会被修改为true呢?

deps有修改或者新增(方便记忆,并不是新增会触发,而是新增时也会同步的触发dirty的修改)的时候;

computed的响应式构造器内部除了有dirty还有一个deps的数组,数组项是foo这个计算属性的依赖项,注意了,这个依赖不是代码表面上的this.a,this.b,this.c,而是在执行foo函数时,只有触发了某个值的getter,才会被添加到依赖数组,

deps默认为[],当第一次执行foo函数时,碰到if(this.a),触发了this.a的getters,就把this.a添加到deps,这时,依赖性里只有this.a,并且同步修改dirty为true,继续执行foo函数,返回最新的结果

伪代码表示就是

假设此时deps里只有this.a

执行this.b='2'

if(!deps.includes('this.b')){

return 上一次的值

}

执行this.a=2,

返回最新的值,

如果刚开始时 this.a=-1,依赖数组里有a,b,c,这个时候this.a=-2,新值和旧值一样,那么会返回上一次的值呢还是会重新计算? 如果返回上一次的值(foo中的console没有执行),就说明这个理论有问题,

JAVA面试速记,面试速记之computed与watch的区别相关推荐

  1. Java常见的面试算法题:实现两个线程交替打印1到100的数

    Java常见的面试算法题:实现两个线程交替打印1到100的数 思路: 这是涉及到多个线程打印的问题,一定会用到锁的(synchronized),故这就是一个多线程打印的典型案例. 代码实现: pack ...

  2. 2021年4月22日 阿里供应链Java开发实习面试(三面)(含总结)

    title: 2021年4月22日 阿里供应链Java开发实习面试(三面) tags: 面经 2021年4月22日 阿里供应链Java开发实习面试(三面) 上来就手撕一道代码--输入一个数,然后顺时针 ...

  3. 2021年4月16日 阿里供应链Java研发实习面试(二面)

    title: 2021年4月16日 阿里供应链Java研发实习面试(二面) tags: 面经 2021年4月16日 阿里供应链Java研发实习面试(二面)(70min) 自我介绍 介绍自己的研究生项目 ...

  4. 2021年4月12日 阿里供应链Java研发实习面试(一面)(含总结)

    title: 2021年4月12日 阿里供应链Java研发实习面试(一面) tags: 面经 2021年4月12日 阿里供应链Java研发实习面试(一面) 自我介绍介绍项目你用哪个版本的Java呢?( ...

  5. 2021年3月16日 北京快手Java开发实习面试(海外增长方向)

    title: 2021年3月16日 北京快手Java开发实习面试(海外增长方向) tags: 面经 2021年3月16日 北京快手Java开发实习面试(海外增长方向) 自我介绍你能讲一下你的项目吗?你 ...

  6. 2021年3月12日 北京格灵深瞳Java开发实习面试(一面)

    title: 2021年3月12日 北京格灵深瞳Java开发实习面试 tags: 面经 2021年3月12日 北京格灵深瞳Java开发实习面试(一面) 首先上来问你问什么不做算法,转做开发呢?(因为我 ...

  7. 2018年4月份,阿里最新的java程序员面试题目

    目录 技术一面(23问) 技术二面(3大块) 性能优化(21点) 项目实战(34块) JAVA方向技术考察点(15点) JAVA开发技术面试中可能问到的问题(17问) 阿里技术面试1 1.Java I ...

  8. Java程序员面试如何超常发挥?

    面试时,你是不是也遇到过这样的情况,明明感觉自己表现发挥的很好,甚至进入到二面环节,到最后却没能拿不到入职offer,连自己"死在"哪块都不清楚.现实工作中这样的例子不在少数,究其 ...

  9. java程序员求职计划_2017年java程序员面试经验(500字)

    1.数据结构 2.OO.按照他的一段描述建模 3.Java和C++在内存管理的不同之处. 4.JAVA的多线程机制. 5.反射机制的作用,以及在哪些方面使用了反射机制 6.网络 7.DesignPat ...

  10. 面试有没有看过spring源码_如何看Spring源码、Java每日六道面试分享,打卡第二天...

    原标题:如何看Spring源码.Java每日六道面试分享,打卡第二天 想要深入的熟悉了解Spring源码,我觉得第一步就是要有一个能跑起来的极尽简单的框架,下面我就教大家搭建一个最简单的Spring框 ...

最新文章

  1. 寻找兄弟单词(2012.5.6百度实习)
  2. OpenGL中投影变换矩阵的反向推导
  3. 静态链表和动态链表 区别
  4. 二维数组排序 行与列分别升序_6个经典排序技巧,尤其是最后一个,绝对的个性化...
  5. c语言定义int 输出4386,大学C语言第五章课后习题参考程序
  6. Python 包管理
  7. wpf label字体为斜体_快来收下这份字体设计必备知识点
  8. Generate a Simulator Build command
  9. 既然Tengine比Nginx更强大,为什么Tengine没有取代Nginx呢?
  10. 62. 拆分初始化负载
  11. aliy 数据库连接池加密_Druid数据库连接池 实现数据库账号密码加密
  12. 代替人工批卷?基于目标检测模型的试卷自动批阅实践
  13. 清翔51单片机开发板及原理图-去年购买的
  14. Centos7.3下载和安装教程
  15. 如何判断某个类是否有某个注解?
  16. notes邮件正文显示不全_NOTES常见问题及解决方法[转]
  17. JAVA加密--JCA、JCE、CSP概念、体系架构与使用示例
  18. 织梦CMS鲜花商城类网站模板
  19. 嵌入式系统的概念,嵌入式系统的组成及特点,嵌入式系统的基本开发流程
  20. python打开本地浏览器_使用webdriver打开本地浏览器--python版

热门文章

  1. java,如何处理大批量数据插入
  2. mysql事务的管理方式_浅谈MySQL事务管理(基础)
  3. oracle迁移需要注意配置文件,xtts迁移实践
  4. Microsoft Blazor Platz.SqlForms开源——使用架构生成器设计和维护SQL Server数据库
  5. SQL的TRUNCATE和DELETE
  6. 什么是数据库触发器?
  7. spring boot注解_Spring-boot(二)注解
  8. ionic 禁止横屏处理
  9. Java垂直镜像,Java OpenCV实现图像镜像翻转效果
  10. label mpchart 饼图_Android MPChart—饼图-Go语言中文社区