:::tips
参会人:@liuzhaoqiang(liuzhaoqiang-xaufk) @wty(u25933244) @旭旭(u2424618) @Yuqian(yuqian) @Alan(u1167164) @Cmen(u68186)
会议时间:2022-09-07
会议地点:无锡 303,南京 莫愁湖
:::
会议主题
- 分析这个bug 的 pr https://code.fineres.com/projects/CHART/repos/duchamp/pull-requests/2185/overview
- 和大家聊聊 纯方法与不可变对象
会议过程
复习昨天会议中学习到的 useEffect,并修改主题1的那个bug纯方法与不可变对象
Javascript 中一共有多少个基础类型?
- Primitive values (immutable datum represented directly at the lowest level of the language)
- Objects (collections of properties)
什么是值类型,什么是引用类型?
JS 中的 string 类型是 值类型 还是 引用类型,Java 和 JavsScript 上有和不同?
Javascript 的赋值流程
var a = { n: 1 };var b = a;a.x = a = { n: 2 };console.log(a.x);console.log(b.x);
请问最终打印的结果是什么?
通过上面的问题来解释 js 的赋值流程。
什么是纯函数
在程序设计中,若一个函数符合以下要求,则它可能被认为是纯函数: 此函数在相同的输入值时,需产生相同的输出。函数的输出和输入值以外的其他隐藏信息或状态无关,也和由I/O设备产生的外部输出无关。 该函数不能有语义上可观察的函数副作用,诸如“触发事件”,使输出设备输出,或更改输出值以外物件的内容等。
function increase(a) {a = a + 1;}var a = 1;increase(a);increase(a);increase(a);console.log(a);
function increase(a) {a = {a: 2};}var a = {a: 1};increase(a);increase(a);increase(a);console.log(a);
function increase(a) {a.a = a.a + 1}var a = {a: 1};increase(a);increase(a);increase(a);console.log(a);
请问最终打印的结果是什么?
不可变对象
为什么要避免改变对象,下面这样写会有什么问题?
var a = [1, 1, 1, 1];var b = a;b[2] = 2;
不可变对象常用库
https://immutable-js.com/
var a = "a";var b = "b";console.log(a == a) //truevar c = new String("a")var d = new String("a")console.log(c == d) //false
为什么会有上述现象?
逼近原生操作 dom 性能的库:
Cmen 解释何为 SEO 优化
