2015-08-10 Alex Sun
一般情况下,我们会使用try..catch..来进行异常处理,例如: ```javascript function sync() { throw new Error('sync error'); } try { sync(); } catch (err) { console.log('error caught:', err.message); } 继续阅读 »
2016-10-12 曹强
定义:定义一系列算法,把他们一个个封装起来,并且使他们可以相互替换。 需求:绩效为S的人年终奖有4倍工资,绩效为A的人年终奖有3倍工资,绩效为B的人年终奖有2倍工资。 var calculateBonus = function(performanceLevel, salary) { if (performanceLevel === 'S') { return salary * 4; } if (performanceLevel === 'A') { return salary * 3; } if (performanceLevel === 'B') { 继续阅读 »
2016-10-12 曹强
迭代器模式是指提供一种方法,顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。迭代器模式可以把迭代的过程从业务逻辑中分离出来,在使用迭代器模式之后,即使不关心内部构造,也可以按顺序访问其中的每个元素。 jQuery中的迭代器 迭代器模式无非就是循环访问聚合对象中的各个元素。比如jQuery中的$.each函数,其中回调函数中的i为当前 索引,n为当前元素,代码如下 $.each([1, 2, 3], function(i, n) { console.log('当前坐标:' + i); console.log('当前值:' + n); }); 然而,作为一个合格的前端开发者,我们不应该只是会用,而 继续阅读 »
2016-09-27 Alex Sun
Hash 哈希函数(散列函数)主要用于生成消息摘要(Message Digest),即将任意大小的数据映射到一个固定大小的数据。最常见的如MD5,SHA1等。 ``` --------- hash function -------------- | input |---------------->| hash value | ``` 在Node中,通过crypto.getHashes()可以查看所支持的哈希算法: js crypto.getHashes() // => [ 'DSA', 'DSA-SHA', 'DSA-SHA1', ... ] 下面是一个MD5的例子: ```js var hash = crypt 继续阅读 »
2014-04-08 Kun Ren
In data-driven statistical computing and data analysis, applying a chain of commands step by step is a common situation. However, it is neither straightforward nor flexible to write a group of deeply nested functions. It is because the function that comes later must be written first. 继续阅读 »
2016-03-22 Xiaosong Gao
Node.js中exports和module.exports有什么不同? 你肯定对Node.js模块中用来创建函数的exports对象很熟悉(假设一个名为rocker.js的文件): exports.name = function() { console.log('My name is Lemmy Kilmister'); }; 继续阅读 »
2014-01-12 W.Y.
在学习排序算法的时候,经常要用到随机数组,于是就写了一个生成随机数组的方法。算法来自网络,只是修改成了 JavaScript 版本。 基本原理是洗牌算法,首先从所有元素中随机选取一个与第一个元素进行交换,然后在第二个之后选择一个元素与第二个交换,直到最后一个元素。这样能确保每个元素在每个位置的概率都是1/n。 具体代码如下: javascript /** * * 生成从 1 到 length 之间的随机数组 * * @length 随机数组的长度,如果未传递该参数,那么 length 为默认值 9 * */ function randomArray(length) { var i, inde 继续阅读 »
2016-09-25 曹强
api
全屏API可以控制浏览器的全屏显示,让一个Element节点(以及子节点)占满用户的整个屏幕。目前各大浏览器的最新版本都支持这个API(包括IE11),但是使用的时候需要加上浏览器前缀。 more 方法 requestFullscreen() Element节点的requestFullscreen方法,可以使得这个节点全屏。 ```javascript function launchFullscreen(element) { if(element.requestFullscreen) { element.requestFullscreen(); } else if(element.mozRequestFull 继续阅读 »
2016-09-24 曹强
d3
事件 在d3入门系列文章中我们介绍过d3选择器,其中有提到选择器为交互添加或移除事件监听器的方法selection.on,除了选择器事件外,D3还提供了很多种事件机制,本节我们详细介绍下d3的事件机制 选择器事件 添加事件监听 跟jQuery类似的方法监听事件,传递参数为当前数据d和索引i; 如果所选择的元素相同类型的一个事件监听已经注册了,新的监听替换老的; selection.on('click',function(d,i){ …. }); 为相同事件类型注册多个监听器,该类型可以跟一个可选的命名空间,如“click.foo”和“click.bar”。 selection.on('click.foo',fu 继续阅读 »
2014-05-31 W.Y.
本文译自 Dmitry A. Soshnikov 的文章 ECMA-262-3 in detail. Chapter 2. Variable object. 参考了一些译文,作为自己学习 ECMAScript 的一点积累。 概要 创建应用程序的时,总免不了要声明变量和函数。然而,解析器(interpreter)是如何以及从哪里找到这些数据(变量,函数)的,当我们引用一个变量时,在解析器内部又发生了什么? 许多 ECMAScript 程序员都知道变量与执行上下文密切相关: ```js var a = 10; // 全局上下文中的变量 (function () { var b = 20; // 函数上下文中的局部变量 } 继续阅读 »