格子熊
格子熊
### 先来两个问题 很多时候,在直觉上,我们都会认为JS代码在执行时都是自上而下一行一行执行的,但是实际上,有一种情况会导致这个假设是错误的。 ```js a = 2; var a; console.log(a); ``` 按照传统眼光,console.log(a)输出的应该是undefined,因为var a在a = 2之后。但是,输出的是2。 再看第二段代码: ```js console.log(a); var a = 2; ``` 有人会想到第一段代码,然后回答undefined。还有人会认为a在使用前未被声明,因此抛出ReferenceError异常。遗憾的是,结果是undefined。 为什么呢? ### 从编译器的角度看问题 JS在编译阶段,编译器的一部分工作就是找到所有声明,并用合适的作用域将他们关联起来。对于一般人来说var a =...
### 浅谈 JS 严格模式 #### 简介 何为严格模式?严格模式(strict mode)即在严格的条件下运行,在严格模式下,很多正常情况下不会报错的问题语句,将会报错并阻止运行。 但是,严格模式可以显著提高代码的健壮性,比如JS经常被人诟病的隐式创建全局变量,在严格模式下就会阻止运行。 总的来说,引入严格模式虽然会导致一些代码不可运行,但是,严格模式使得一些JS广受诟病的问题无法运行,从长期角度上看,绝对是利大于弊。 #### 用法 进入严格模式的方法很简单,只需要在在需要进入严格模式的作用域开头输入`"user strict"`即可,值得一提的是,在无法执行严格模式的旧版浏览器中(IE10之前),该条指令会自动被忽略。 例1: ```js "user strict"; x = 1; // Uncaught ReferenceError: x is not defined ``` 如例1所示,在全局作用域的开头定义了严格模式,并隐式定义了全局变量`x`,`x...
### 浅谈 JS 自记忆函数 最近阅读《JavaScript忍者秘籍》看到了一种有趣的函数:自记忆函数。 #### 简介 何为自记忆函数?书中提到: > 记忆化(memoization)是一种构建函数的处理过程,能够记住上次计算结果 通过这句话可以得出,自记忆函数其实就是能够记住上次计算结果的函数。在实现中,我们可以这样进行处理:当函数计算得到结果时,就将该结果按照参数存储起来。采取这种方式时,如果另外一个调用也使用相同的参数,我们则可以直接返回上次存储的结果而不是再计算一遍。 显而易见,像这样避免既重复又复杂的计算可以显著提高性能。对于动画中的计算、搜索不经常变化的数据或任何耗时的数学计算来说,记忆化这种方式是十分有用的。 #### 一个自记忆函数的例子 下面这个例子展现自记忆函数的工作方式: ```js // 自记忆素数检测函数 function isPrime (value) { // 创建缓存 if (!isPrime.answers) { isPrime.answers = {};...
为什么要写博客?从一开始,这个问题就一直困扰着我。 最开始的时候,写博客的目的是紧跟潮流。毕竟,身为程序员,github 和博客基本是必备的,不论是面试还是吹水,都是一大利器。稀里糊涂的,在 2018 年 1 月 1 日,我在博客园写了第一篇文章。由于当时刚正式工作半年,也写不出什么源码解析、最佳实践之类的文章。所以,刚开始的时候,基本是在记录工作中遇到的 bug,并总结了一些解决这些 bug 的方案。在这一时期,写博客的意义在于总结工作中遇到的问题,方便下次碰到的问题时候快速解决问题。 之后的半年时间中,工作比较忙,再加上懒癌发作,而为了保住自己当时说好的一个月一篇的誓言,经常进行灌水,可以说,那段时间简直是黑历史[捂脸]。 时间到了 2018 年年底,认识了当时掘金的编辑——Linmi 大佬,在他言传身教之下,我系统性的学习了一些写文章的技巧,包括写作规范、标题的取法之类的(虽然我现在还是放不下身段去做一个标题党,哈哈哈)。 由于 2018 年看了 N 多书籍,系统性的巩固了自己的基础,再加上开始阅读一些源码,再再加上写作技巧的提升,当时写了不少自己如今看下来还不错、读者能学到一些东西的文章。 这一时期,我写博客的目的从记录转变成了交流,和各路大神探讨技术。最典型的是 [浅谈 class 私有变量](https://juejin.im/post/5c25faf3f265da61380f4b17),在这篇文章中,轮番被各路大佬教育,更加加深了对文章中提到的知识点的理解。哪怕过了一年半,我依然记得那天晚上,Linmi 小心翼翼的告诉我,他在掘金后台上看到好多读者对我进行了质疑,让我不要生气。其实,互相交流,本来就是提升技术最好的手段,生气你就输了,不是吗? 再到后来,我一度沉迷于文章阅读量,写了几篇小白文,甚至都准备写自己之前最鄙视的 “面试” 系列文章,还好最后理智阻止了我[捂脸]。...