:::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) //true
var c = new String("a")
var d = new String("a")
console.log(c == d) //false
为什么会有上述现象?
逼近原生操作 dom 性能的库:
Cmen 解释何为 SEO 优化