JavaScript 循环中,i++ 与 i– 那个比较快?相信有不少朋友看过相关的讨论文章,比如这篇。文章解释了开启优化选项后,i– 的 Java 代码节省了 1 条指令,从而可以运行得更快。那么,JavaScript 上运用 i– 是否有同样的表现呢?

这里试图从语言层面分析造成差异的原因,并展示不同 JavaScript 运行环境产生的差异。

引言

最常见的闭包 (Closure) 范式大家都很熟悉了:

1
2
3
(function() {
// ...
})();

很简单,大家都在用。但是,我们需要了解更多。
首先,闭包是一个匿名函数 (Anonymous function), 即是 (function() {}) 这部分。之所以要给 function 添加括弧是为了让它形成一个表达式 (expression), 有了表达式,并且确定它的类型是个函数 (Function 实例), 就可以直接调用它。所以,后面的一对括弧是可以工作的,它的意义是:我要调用 (call) 这个函数。

既然是函数调用,那就可以像一般的函数那样,在调用时传入参数。这就是本次讨论的话题。


More »

支付宝注册用户已经突破 3 亿,2009 年网购交易额达到 2670 亿元 (via),支付宝用户特征在一定程度上反映了中国电子商务用户的普遍情况。
基于支付宝网站流量统计数据,支付宝前端开发组最近发布了浏览器与操作系统统计报告。这份报告对电子支付行业以及所有互联网电子商务网站都具有现实意义。

第四届 D2 前端技术论坛已于 12 月 19 日在杭州举办。这份回顾之所以现在才和大家见面,实在是因为年底太忙,呵呵,大家见谅。


第四届 D2 由阿里巴巴公司提供场地和其他资源。(via)
More »

Gmail 作为一个经典的 Web 2.0 应用,在带来革命性的邮件管理体验的同时,以其完整、快速的 AJAX 操作方式,深受用户的推崇和技术人员的追捧。

技术上,Gmail 通过将用户的操作以 #op1/op2 这样的形式(即 hash 或 fragment, 这里称之为 hash)反映在浏览器地址栏,最后得到一个类似这样的 URL: https://mail.google.com/mail/#inbox. 它还允许用户直接粘贴这样的地址到达相同的操作界面,并可以通过浏览器的前进/后退按钮在操作步骤之间跳转。

也想尝试一下?先分析一下,通过获取 hash 的值,执行一些操作,即可恢复到该值表示的场景——非常简单。但是,要处理浏览器前进/后退按钮,跳转到相应场景,则有一定困难。因为浏览器不会告诉你 hash 发生变化了。因此,需要实现一个 JavaScript 浏览器导航按钮处理模块。

网上有些代码实现了类似功能,大多感觉冗长复杂。这里,我们介绍支付宝实际应用中开发的一段代码,它的功能简单实用——允许用户指定 hash 发生变化时要做的事情(回调),也可以随时停止它。简单地说,这个代码的原理是,每隔一段时间检查 hash 有没有发生变化,如果有,就运行用户指定的回调方法。代码如下:
More »

Page12