Eloquent Javascript

更新日期: 2015-12-12 阅读次数: 7980 分类: Javascript

The art of programming is the skill of controlling complexity.

在线阅读地址 Eloquent JavaScript 已更新至第二版

降低使用复杂度

var total = 0, count = 1; 
while (count <= 10) {
    total += count;
    count += 1; 
}
print(total);

如果通过自定义的 sum, range 组成,那么复杂度将大大降低。

print(sum(range(1, 10)));

大家更喜欢 Python 而不是 Javascript, 也就是因为 Python 可读性更好,而实际上这些 都可以通过自定义的 js 函数来解决。

所以,要熟练使用一门语言,并爱上这门语言,必然要做一些自己的封装。实际上,我们 看 AngularJS 的源代码就能发现,许多的封装,例如 angular.forEach 就使 loop array 和 object 更加方便。Redis 的代码里同样能看到作者的大量封装,以符合自己的 使用习惯。

讨厌一样东西,有时候太武断

看了作者的观点,我好惭愧。作者对 javascript 不便捷的地方做了大量的封装,而我只 是一味的抱怨。所以,有时候我们在争论一项技术是否优于另一项时,显得有些武断,当 我们认识到其缺陷时,为什么第一反应不是去完善他呢?哈哈

为什么对 javascript 的第一印象就是丑陋

如果我第一次看到的 javascript 代码都是 AngularJS 源代码那样的质量,我想我一定 不会有 js 是一门丑陋的语言这种印象。说到底,丑陋跟语言无关,跟人有关。所以,学 习高手的代码才是正道。

选择入门书也很重要,例如这本书的作者就能瞬间提升你对 js 的兴趣,而不想其他教程 让你不断体会到枯燥。

如何写一个自己的 js module 使 js 写起来更顺手

必然要有自己的 namespace, e.g. eloquent.range(10), 如何定义 namespace 才更顺手。

尝试一:

var eloquent = {
    version: "0.0.1",
    range: function(upto) {
        ...
    }
};

感觉 key, value 的方式好丑。。。且不方便区分私有函数和 public method。

尝试二:

var eloquent = new Object();

eloquent.version = "0.0.1";

eloquent.range = function(upto) {
    ...
};

也不方便在 namespace 中定义私有函数,且要不断加 eloquent 前缀,好麻烦。

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式