《你不知道的 JavaScript》读后感
看完后,对于 JavaScript 的理解肯定是增加了一些,但更多的是在“学习”方面有了更深刻的认知,学习到如何“学习”。
举个栗子
在 p27 提到
(function foo(){ .. }) 作为函数表达式意味着foo 只能在.. 所代表的位置中被访问,外部作用域则不行。foo 变量名被隐藏在自身中意味着不会非必要地污染外部作用域。
看到的时候就觉得很奇怪,函数名只能在自身作用域访问到,那这个函数名还有什么意义,重点是为什么在外部作用域无法被访问到?
于是写了这么一段代码想要测试()
是否会产生作用域导致无法在外部访问(虽然明知道不可能...):
;(var a = 1)
console.log(a)
但是报错很意外:
;(var a = 1)
^^^
SyntaxError: Unexpected token var
到这里就发现,自己对于()
有什么作用的知识点完全不了解。在了解到()
可以用来强制表达式执行后,又产生了对 IIFE 的一个疑问,如果 IIFE 是“声明一个函数并立即调用”,那下面的代码为什么不行?
function () {
console.log('hello iife')
}()
为什么在最外层加上()
就可以了,既然()
是用来强制表达式执行,表示内部首先是一个表达式,表达式也可以直接运行的吧。
虽然在继续阅读书的过程中解开了这个疑惑,但我的第一篇博客就是写的关于 IIFE,却发现自己对于 IIFE 这么不了解,实在汗颜。
舒适区与一万小时定律
在 p77 页关于this
的知识点时提到了“舒适区”这个概念,字面意思就是让自己感到舒适的区域。长时间待在舒适区,并不会让自己的能力有多大提升。而“一万小时定律”是指:
要成为某个领域的专家,需要10000小时,按比例计算就是:如果每天工作八个小时,一周工作五天,那么成为一个领域的专家至少需要五年。这就是一万小时定律。
如果将两者结合起来思考,在舒适区内的 10000 小时,也能够让人成为专家吗?
刻意练习
我觉得是不能的,因为经过实践证明。。。每天涂涂画画自己学会的简笔画,并不会让自己成为顶尖的画师。当然这么说很极端,不过跳出舒适区,刻意去让自己处于“头疼”的境地,绝对比待在舒适区享受成就感要更好。
var a, b, c;
这样声明变量很常见,自己也会写,但是为什么可以这样声明呢?,
的作用又是什么?
刻意练习,或者说深究原理吧,才能让自己有更强的竞争力。
就好像这本书,同样是一个知识点,为什么别人就能够说出这么多自己不知道的地方呢?
是吧?。