Eloquent Javascript

更新日期: 2015-12-12 阅读次数: 4359 分类: 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 聊聊。 白天工地搬砖,晚上哄熊孩子,可能回复有点慢,见谅。 查看更多联系方式

相关文章

爱评论不评论

近期节日

2019年11月20日 国际儿童日
2019年11月21日 世界问候日
2019年11月22日 小雪
2019年11月22日 感恩节
2019年11月29日 黑色星期五
2019年12月01日 世界艾滋病日
2019年12月03日 国际残疾人日
2019年12月07日 大雪
2019年12月09日 "一二九"运动纪念日
2019年12月09日 世界足球日
2019年12月10日 世界人权日
2019年12月12日 西安事变纪念日
查看更多节日