Open dlrandy opened 6 years ago
对于函数的参数固定的情况用默认值(考虑到顺序,如果想skip就不太好用了),不固定使用Object (注意rest)
把依赖作为参数传入就叫做依赖注入。一般可以把依赖封装成service
可测试的function可以理解为没有外部依赖的函数。使用依赖注入写可测试的function只能是把mock问题转移到了另一个function
当你写测试很麻烦的时候 可能需要重写你的代码了
当使解构 rest参数 default参数 arrow function后面的时候,一定要注意圆括号
HOC 可以很方便的锁住参数。面试被问到 HOC 概念属性代理 继承反转
高阶函数就是在完全的resolve之前需要调用多次的函数
克理化函数就是 把一个接受多个参数的函数改成需要多次执行的且一次只有一个参数的函数 、
用一行代码来一段检测狗的重量是否符合标准 (dog{wieght} standard)
tests需要大量的helpers( spies mocks stubs)的时候,表明你的code复杂化了或者是耦合了。需要简化。但是有时候 helpers又是不可避免的
调用函数的时候,this的绑定是在函数调用的时候;箭头函数不会新创建this. 它是最近的词法context
箭头函数适合已经有了context的时候且在另一个函数里使用函数的时候。但是在需要设置新的this 绑定的时候会有问题。
class怎么声明generator对象 ;普通对象呢。sprad和generator什么关系
JSOO和传统OO不同的地方在于:传统OO,类是一个对象的蓝图,在创建新对象的时候,是把所有的属性和方法拷贝到新对象里;但是js是原型语言,创建新实例的时候,不会拷贝方法,而是创建一个link到原型,也就是类是一个对象。所以当你看见clas的时候,应该认识到class是prototype的快捷方式
类的get set可以防止他人修改你不想暴露的属性。也可以防止他人设置错误的类型运气bug
generator可以把一个函数变成iterable的
架构:就是以可扩展可复用可管理的方式组织代码就是架构。而不是解决具体的问题
ES6是静态模块结构,也就是在compile的时候 确定了impot和export。不能是runtime确定的。但是后续的版本中的 import()是可以动态、条件加载的,而且参数可以是任何能够产生字符串的值, 他返回的是一个promise,配合spread最好。
好处是:
越多的 变量需要去追踪,就越容易出问题 使用箭头函数简化循环
箭头函数尽最大可能的去掉冗余的信息
箭头函数为什么阻止了 mutations和很多的变量声明 ?
使用数组的方法 书写更简短的循环
对于for循环和forof应该尽量少用,因为他们有些杂乱
现在化的js意味着简单 可读 可预测。
使用数组的map创建同样size的数组
使用filter和find拉取数组子集
使用forEach应用一致的actions 什么时候使用forEach?是知道arry必须要引起side effects的时候,也即要在函数作用域之外执行action的时候
数组是可以链式方法的
使用reduce转换数据
map改变shape;filter改变size;reduce两个全改变