我是 dog 君, 一名 95 后前端小兵, 互联网前端开发工程师, 坐标北京. 希望能够认识大家, 如果这篇文章能让你感到共鸣, 欢迎添加我的微信, dm120225, 我们可以一起来探讨, 互相学习, 共同进步, 期待你的到来.
开通简书博客已有接近半个月的时间了, 期间拜读了《你不知道的 JavaScript》系列上中下三卷. 与其说, 从这本书中学到多少多少知识, 不如谈谈这本书带给我的改变.
生活上的改变
初次打开《你不知道的 JavaScript 上卷》, 是在 10 月 12 日的晚上. 我是一个非常喜欢读书的人, 毕竟一个人在偌大的北京, 回去也是自己一个人, 难免会感到孤独, 读书给了我精神上的力量 (我又装逼了, 哈哈!!) 说正事, 我确实比较喜欢读书, 因为读书能让我静下心来, 集中注意力去做一些事情, 并且能扩展我的眼界. 周一到周五工作日, 由于 dog 君九点下班, 到家也十点多了, 收拾收拾, 到十点半, 处理一些事情, 基本上十一点, 开始读书, 阅读到一点, 玩一会儿手机, 就睡觉了. 如果是周末的话, 我仍然是晚上读书的习惯, 白天通常会和小伙伴们出去走走, 回来看看最新的技术前沿, 为我后面的学习做个排期. 这大概是我的一个读书习惯吧.
那么为什么这本书会给我带来一些生活上的改变呢?
首先, 晚上下班回家, 有事情去做, 不至于回到家就瘫软在床上刷手机或者胡思乱想, 做一些没有价值, 浪费时间的事情, 当然, 读书在某种程度上也会消除掉你的孤独感.
其次, 读书使你自律. 试想一下你每天晚上下班回到家, 刷手机到深夜, 汲取着没有营养的碎片信息, 回想着今天自己又浑浑噩噩的度过一天, 没有什么进步, 有没有感觉到愧疚? 越想越睡不着, 于是通过玩手机转移自己的注意力, 结果越来越兴奋, 睡不着, 睡觉时间已是凌晨, 第二天早上艰难起床去上班, 没有状态, 浑浑噩噩度过一天, 晚上继续瘫倒在床上刷手机, 无限循环. 这是不是你的日常状态呀? 想改变嘛? 那就读书吧! 每天晚上你回到家, 收拾收拾, 开始读书, 你会不自觉的进入一种注意力高度集中的状态, 你能扩展自己的视野, 你能学到很系统全面的知识, 更重要的是, 让你感受到你今天是有价值的, 最起码读书本身就是一件有价值的事情, 于是你会很快地进入睡眠状态, 形成一种良性循环.
最后, 读书让我离梦想更近一步. 梦想一定要有, 万一要实现了呢? dog 君身为一名前端开发工程师, 对一些基本的工作技能的掌握是必须的, 但是如果进阶突破的话, 在企业里面也是很难能够有这个机会的. 网上大量的宣传着各种各样的大前端架构, 高级前端开发工程师必经之路, dog 君以前非常相信这些的, 但是自从看完了《你不知道的 JavaScript》系列后, 我发现, 万变不离其宗, 各种高级进阶的知识点, 无外乎是平时大家工作中用不到的一些 JS 底层原理, dog 君也看过这类的视频, 里面所讲的知识点, 在这系列书中都有涉及到.
技术思维上的改变
其实在技术思维上对我的改变是最大的. 以前的 dog 君, 专心研究应用层的东西, 搭架子, 封组件, 复制粘贴撸代码, 打包, 构建, 部署, 上线, 一套流程都有一个完整的操作指南. 期间 dog 君也在想为什么他们在讨论各种源码, 各种写工具, 而我各种在复制粘贴? 我也想看源码, 但是当我打开源码, 我是真的看不进去, 因为里面涉及到了大量的 JS 底层的应用, 写框架大概就是如此把, 内心还是恐惧的. 但现在不同了, 我也搞过这些东西, 熟读过红宝书《JavaScript 高级程序设计》, 犀牛书《JavaScript 权威指南》, 还有最近的《你不知道的 JavaScript》系列, 不说自己能掌握多少, 但起码面对源码这种东西咱打心里边不恐惧了对吧.
听一个大哥说, 看源码是技术进步最快的一个渠道, 但是首先需要具备看源码的水平, 像 JS 的底层原理, 设计模式, 面向对象编程等等, dog 君也在一步步的去努力, 为看源码做好知识储备, 厚积薄发, 一飞冲天. 我相信人家可以做到了, 我自己为什么不可以? 一步步走, 干就完了. 哈哈.
一些感悟
《你不知道的 JavaScript》首先这是一系列技术书籍, 里面是蕴含着很多的技术经验的, 啃起来比较费力. 如果曾经没有过相关的开发场景和难题, 想要吃透这个知识点还是比较困难的. dog 君一开始也是这样, 复制粘贴一把梭, 抄起键盘就是干习惯了, 很少去问为什么, 对这些底层呀, 原理呀也是一知半解的状态, 总是在应用层上逍遥快活. 记得曾经的一次面试, 面试官给我说了一个应用场景, 然后让我去判断是 ReferenceError 还是 TypeError, 还有 PromiseA + 算法, JS 的左查询右查询等, 当时对我来说, 完全处于一种懵逼状态, 完全不知道人家在讲的是什么. 但是现在在我看来, 他问的问题, 实际上就存在漏洞. 比如说 JS 执行前需要编译, 编译过程中可能 SyntaxError, 接下来是运行时, 在作用域中找不到变量会报 ReferenceError 错误, 找到变量了但是错误的去使用, 会报 TypeError, 所以说怎么可以只有 ReferenceError 和 TypeError 呢? 像他说的 PromiseA + 算法, 其实不是算法, 正确的是 PromiseA + 规范, 解析 JS 的引擎按照 A + 规范去实现了 Promise. 最后是左查询右查询, JS 有这种东西吗? 那是 LHS 和 RHS, 并且在严格模式和非严格模式下也会呈现不同的结果.
综上所述, 我总结出, 想要进阶高级, 最直接有效的方法, 是去刷面试题, 然后根据面试题, 理解其原理, 还原应用场景, 写 demo. 不管怎样, dog 君告诉大家, 都需要一步步的去执行的, 不可以光靠想, 在行动中思考, 行动起来, 你才会遇到问题, 在不断的踩坑过程中, 提升个人的经验, 提升自身的核心竞争力, 增长自己的经验水平. 非常感谢大家能够看到这里, 给大家附上一个大佬总结的面试集锦链接吧, 大家可以挑战一下, dog 君陪你一起, 哈哈. 陌生人, 加油!
前端最强面经汇总
我是 dog 君, 一名 95 后前端小兵, 互联网前端开发工程师, 坐标北京. 希望能够认识大家, 如果这篇文章能让你感到共鸣, 欢迎添加我的微信, dm120225, 我们可以一起来探讨, 互相学习, 共同进步, 期待你的到来.
来源: http://www.jianshu.com/p/d7f6efbe4a95