bigfrontend 代码题(四) 16. 实现一个Event EmitterNode.js中有Event Emitter,Facebook 也曾经有自己的实现 不过已经archive了。 请实现你自己的 Event Emitter 1const emitter = new Emitter() 它需要支持事件订阅 12345const sub1 = emitter.subscribe('event1', ca 2021-10-21 #做题
bigfrontend 代码题(三) 8. 手写shuffle()随机打乱一个数组能否手写一个shuffle() ? 当传入一个数组的时候,shuffle()需要更换元素的顺序,每一种最终的数列都需要被相等的概率生成。 比如 1const arr = [1, 2, 3, 4] 以上的数组共有4! = 24 中不同的排列 12345[1, 2, 3, 4][1, 2, 4, 3]... 你写的 shuffle() 需要按照相同的概率 2021-10-20 #做题
bigfrontend 代码题(二) 4. 手写throttle()Throttle是web应用中经常用到的技巧,通常情况下你应该使用现有的实现,比如lodash throttle() 。 你能够自己实现一个基本的throttle()吗? 再次说明一下,throttle(func, delay)返回一个function,这个function无论多么频繁地调用,原始的func的调用也不会超过指定的频率。 比如,这是throttle之前的 2021-10-19 #做题
bigfrontend 代码题(一) 1. 实现curry()柯里化(Currying) 在JavaScript是一个常用的技巧。 请实现一个curry()方法,接受一个function然后返回一个柯里化过后的function。 这是一个例子 1234567891011const join = (a, b, c) => { return `${a}_${b}_${c 2021-10-19 #做题
通过命令行使用Python from: 命令行与环境 命令行调用 Python 时,可以指定下列任意选项: 1python [-bBdEhiIOqsSuvVWx?] [-c command | -m module-name | script | - ] [args] 最常见的用例是启动时执行脚本: 1python myscript.py 通过运行 where python 可以查看 python 安装位置 1234C: 2021-10-19 #文档阅读
Javascript中变量、函数、对象、类的声明方法汇总 变量 关注变量的声明符,let、const、var 旧时的 “var” let — 现代的变量声明方式。 var — 老旧的变量声明方式。一般情况下,我们不会再使用它。但是,我们会在 旧时的 “var” 章节介绍 var 和 let 的微妙差别,以防你需要它们。 const — 类似于 let,但是变量的值无法被修改。 变量的命名: 变量名称必须仅包含字母,数字,符号 $ 和 _。 首字 2021-09-21 #知识汇总
函数的apply、call、bind 方法的区别 参考:装饰器模式和转发,call/apply 装饰器 是一个围绕改变函数行为的包装器。主要工作仍由该函数来完成。 装饰器可以被看作是可以添加到函数的 “features” 或 “aspects”。我们可以添加一个或添加多个。而这一切都无需更改其代码! 为了实现 cachingDecorator,我们研究了以下方法: func.call(context, arg1, arg2…) —— 用给定的上 2021-09-02 #知识总结
C语言中的*和& What’s the difference between * and & in C?* 和 & 作为类型修饰符: int i 声明一个整数类型变量 i int* p 声明一个指向整数类型变量的指针 p int& r = i 声明一个对整数类型变量的引用,并且这个变量为 i. (仅用在C++ 中,注意引用必须在初始化的时候进行赋值;因此 int& i; 是不存 2021-08-08 #学习总结
技术学习方法总结 我主张,在具备基础之后,学习任何新东西,都要抓住主线,突出重点。对于关键理论的学习,要集中精力,速战速决。而旁枝末节和非本质性的知识内容,完全可以留给实践去零敲碎打。 原因是这样的,任何一个高级的知识内容,其中都只有一小部分是有思想创新、有重大影响的,而其它很多东西都是琐碎的、非本质的。因此,集中学习时必须把握住真正重要那部分,把其它东西留给实践。对于重点知识,只有集中学习其理论,才能确保体系性、 2021-08-01 #方法总结
编程语言学习方法 现在的开发工作要求我们能够快速掌握一门语言。一般来说应对这种挑战有两种态度:其一,粗粗看看语法,就撸起袖子开干,边查Google边学习;其二是花很多时间完整地把整个语言学习一遍,做到胸有成竹,然后再开始做实际工作。然而这两种方法都有弊病。第二种方法的问题当然很明显,不仅浪费了时间,偏离了目标,而且学习效率不高。因为没有实际问题驱动的语言学习通常是不牢固不深入的。有的人学着学着成了语言专家,反而忘了 2021-07-25 #方法总结