为什么getElementByTagName()比querySelectorAll()的速度更快?

Leave a comment

为什么 getElementByTagName()querySelectorAll()的速度快?
附上jsperf的链接速度比较

getElementsByTagName

下边将会描述下,为什么会这样。

在深入了解细节之前,首先说下这俩个方法重要的区别,不仅仅是一个方法接受tagName,另外一个接受css选择器。最重要的区别在于返回值: getElementsByTagName() 返回一个实时的 NodeList,
querySelectorAll()返回静态的 NodeList。 这点是对理解速度的快慢是非常重要的。

实时的NodeList

这个是文档对象模型(Document Object Model)的一个坑。[……]

Read more

Promise的历史

2 Comments

简单介绍promise的历史

Promise 已经在许多语言里,以各种形式存在了好多年了。这个术语首先在C++的Xanadu工程–web的先驱者,中被使用。之后,Promises被用在E语言中,激励Python的开发者,在他们的Twisted 框架中实现了Deferred.

当Dojo框架从Twisted中发现了Promise,并且添加了一个叫dojo.Defrred的对象,Promise 赶上了2007年,javascript的主流。此时,Dojo相对于初出茅庐的jQuery来说,已经算是一个比较流行的框架。

在2009年,受dojo.Deferred的影响,Kris Zyp 提出C[……]

Read more

seajs combo插件之express版本

Leave a comment

写了个nodejs版本的combo插件

使用:

javascript中的函数式编程

Leave a comment

函数式编程提供开发者把一般的集合抽象成可复用,可组合的代码块。当你发现你对集合的绝大多数操作,都会通过以下5个简单的函数来完成,会非常吃惊。

  1. map
  2. filter
  3. mergeAll
  4. reduce
  5. zip

我保证: 如果你学会了这5个函数,你的代码将会变的更短,更易读,更稳定。而且,还有些不显而易见的理由,你可以通过学习这5个函数,掌握简化异步编程的要点。一旦你完成了这个指南,你会有好多工具轻松避免竞态条件,冒泡,处理异步错误,序列化事件跟ajax请求。简言之,这5个函数将很有可能是你学过的,最给力,最灵活,最有用的函数。

处理数组

数组是JavaScript中的唯一的集合类型。数组[……]

Read more

javascript中{} + {}的结果是什么?

Leave a comment

对象或者数组相加的时候,会产生有点意外的结果。

这篇文章主要是解释为什么会产生这种结果。

在JavaScript中加号操作的规则比较简单:只能对Number或者String相加,其他的值都会被转化成这两种类型中的一种。为了理解这种转化是怎么工作的,我们首先弄清一些事情,参考ECMA-262v5版本 9.1章节

快速复习下,在JavaScript中有两种值:primitivesobjects.原始类型的值有:
undefined null Boolean Number String.其他的所有值都是Object包括array跟function

1. 值的转换

加号运算符能执行三种[……]

Read more

javascript 数字类型跟点号

Leave a comment

js中所有的东西表现都像Object一样,即使有些问题看起来不像Object. 例如

我们看到这两个例子,第一个,原始类型的字符串 Odin 让我们像一个Object一样处理它。第二个,原始类型Boolean
true 我们像Object一样,去访问toString方法。

但是,当我们对一个数字,做同样的事情的时候,我们很有可能会碰到一个错误

因为这个错误,许多javascript开发人员留下了,不能用点号去访问,原始数字类型的属性的印象。你可能尝试用大[……]

Read more

python 检查是否是素数

Leave a comment

什么是素数(质数):

  • 1、大于1的正整数
  • 2、只能被1跟自身整除
  • 3、最小的素数是2,也是素数中唯一的偶数;其他素数都是奇数。质数有无限多个,所以不存在最大的质数。

nodejs in action 读书笔记—异步流程控制

1 Comment

按顺序执行异步方法

顺序执行

  • 任务有先后关系。
  • 比如:创建 foo/aa.txt ,首先要创建aa.txt 不能在 文件夹foo之前创建。
  • 当执行顺序流程时,你需要跟踪或者是维护一个没有执行的任务队列。

并行执行

  • 任务之间相互的停止,启动,相互影响不大,但是在进一步执行之前,这些任务都应该执行完毕。
  • 比如:下载多个文件,然后压缩成zip文件。 文件可以同时下载,但是创建压缩的时候,这些文件应当全部下载完毕。
  • 当执行并行流程时,你需要记录已经完成多少个任务了

实现串行流程控制

  • 看下这段代码:

一个[……]

Read more