:::tips 参会人:@liuzhaoqiang(liuzhaoqiang-xaufk) @wty(u25933244) @旭旭(u2424618) @Yuqian(yuqian) @Alan(u1167164) @Cmen(u68186)
会议时间:2022-09-07
会议地点:无锡 303,南京 莫愁湖 :::

会议主题

  1. 分析这个bug 的 pr https://code.fineres.com/projects/CHART/repos/duchamp/pull-requests/2185/overview
  2. 和大家聊聊 纯方法与不可变对象

    会议过程

    复习昨天会议中学习到的 useEffect,并修改主题1的那个bug

    纯方法与不可变对象

    Javascript 中一共有多少个基础类型?

什么是值类型,什么是引用类型?

JS 中的 string 类型是 值类型 还是 引用类型,Java 和 JavsScript 上有和不同?

Javascript 的赋值流程

  1. var a = { n: 1 };
  2. var b = a;
  3. a.x = a = { n: 2 };
  4. console.log(a.x);
  5. console.log(b.x);

请问最终打印的结果是什么?
通过上面的问题来解释 js 的赋值流程。

什么是纯函数

在程序设计中,若一个函数符合以下要求,则它可能被认为是纯函数: 此函数在相同的输入值时,需产生相同的输出。函数的输出和输入值以外的其他隐藏信息或状态无关,也和由I/O设备产生的外部输出无关。 该函数不能有语义上可观察的函数副作用,诸如“触发事件”,使输出设备输出,或更改输出值以外物件的内容等。

  1. function increase(a) {
  2. a = a + 1;
  3. }
  4. var a = 1;
  5. increase(a);
  6. increase(a);
  7. increase(a);
  8. console.log(a);
  1. function increase(a) {
  2. a = {a: 2};
  3. }
  4. var a = {a: 1};
  5. increase(a);
  6. increase(a);
  7. increase(a);
  8. console.log(a);
  1. function increase(a) {
  2. a.a = a.a + 1
  3. }
  4. var a = {a: 1};
  5. increase(a);
  6. increase(a);
  7. increase(a);
  8. console.log(a);

请问最终打印的结果是什么?

不可变对象

为什么要避免改变对象,下面这样写会有什么问题?

  1. var a = [1, 1, 1, 1];
  2. var b = a;
  3. b[2] = 2;

不可变对象常用库
https://immutable-js.com/

  1. var a = "a";
  2. var b = "b";
  3. console.log(a == a) //true
  4. var c = new String("a")
  5. var d = new String("a")
  6. console.log(c == d) //false

为什么会有上述现象?

逼近原生操作 dom 性能的库:

Cmen 解释何为 SEO 优化