最新 | 最热门 | 最高评价

+0  require() 源码解读

Tag: JavaScript
阮一峰 发于 2015年05月20日 11:15 | 点击: 1288 | 展开摘要
2009年,Node.js 项目诞生,所有模块一律为 CommonJS 格式。

时至今日,Node.js 的模块仓库 npmjs.com ,已经存放了15万个模块,其中绝大部分都是 CommonJS 格式。

这种格式的核心就是 require 语句,模块通过它加载。学习 Node.js ,必学如何使用 require 语句。本文通过源码分析,详细介绍 require 语句的内部运行机制,帮你理解 Node.js 的模块机制。

一、require() 的基本用法

分析源

查看全文: http://www.udpwork.com/item/14223.html

+0  async 函数的含义和用法

Tag: JavaScript
阮一峰 发于 2015年05月11日 10:38 | 点击: 1492 | 展开摘要
本文是《深入掌握 ECMAScript 6 异步编程》系列文章的最后一篇。

Generator函数的含义与用法

Thunk函数的含义与用法

co函数库的含义与用法

async函数的含义与用法

一、终极解决

异步操作是 JavaScript 编程的麻烦事,麻烦到一直有人提出各种各样的方案,试图解决这个问题。

从最早的回调函数,到 Promise 对象,再到 Generator 函数,每次都有所改进,但又让人觉得不彻底。它们都有额外的复杂性,都需要理解抽象的底层运行

查看全文: http://www.udpwork.com/item/14196.html

+0  co 函数库的含义和用法

Tag: JavaScript
阮一峰 发于 2015年05月06日 11:37 | 点击: 1428 | 展开摘要
进入正文之前,先插播一条消息。

我七年前翻译的《软件随想录》再版了(京东链接)。这次是《Joel论软件》两卷同时再版,第一卷是新译本,第二卷是我翻译的。

本书的作者是著名程序员、StackOverflow的创始人 Joel Splosky。我觉得,它是软件项目管理的最好读物之一,推荐阅读。

========================================

以下是《深入掌握 ECMAScript 6 异步编程》系列文章的第三篇。

Generator

查看全文: http://www.udpwork.com/item/14185.html

+0  Thunk 函数的含义和用法

Tag: JavaScript
阮一峰 发于 2015年05月01日 09:42 | 点击: 1455 | 展开摘要
本文是《深入掌握 ECMAScript 6 异步编程》系列文章的第二篇。

Generator函数的含义与用法

Thunk函数的含义与用法

co函数库的含义与用法

async函数的含义与用法

一、参数的求值策略

Thunk函数早在上个世纪60年代就诞生了。

那时,编程语言刚刚起步,计算机学家还在研究,编译器怎么写比较好。一个争论的焦点是"求值策略",即函数的参数到底应该何时求值。

var x = 1;

function f(m){
return m * 2

查看全文: http://www.udpwork.com/item/14169.html

+0  Generator 函数的含义与用法

Tag: JavaScript
阮一峰 发于 2015年04月24日 10:27 | 点击: 1772 | 展开摘要
本文是《深入掌握 ECMAScript 6 异步编程》系列文章的第一篇。

Generator函数的含义与用法

Thunk函数的含义与用法

co函数库的含义与用法

async函数的含义与用法

异步编程对 JavaScript 语言太重要。JavaScript 只有一根线程,如果没有异步编程,根本没法用,非卡死不可。

以前,异步编程的方法,大概有下面四种。

回调函数

事件监听

发布/订阅

Promise 对象

ECMAScript 6 (简称 ES6 )作为

查看全文: http://www.udpwork.com/item/14107.html

+0  从Java和JavaScript来学习Haskell和Groovy(类型系统)

Tag: Programming Paradigm | Groovy | Haskell | Java | JavaScript | 类型
四火 发于 2015年04月19日 14:31 | 点击: 1345 | 展开摘要
接上文《从Java和JavaScript来学习Haskell和Groovy(引子)》。

首先搞清几个概念:

动态类型(Dynamic Typing)和静态类型:区别的核心在编译期还是运行时。静态类型的语言系统在编译期就明确知道每一个变量的类型,如果发现不合法的类型赋值就在编译期报错;动态类型则直到运行时才会报错。

类型推导(Type Inference),类型推断是指可以在上下文中,编译器来推导实际的类型,也就是代码使用隐式类型指定。比如一个简简单单的“var

查看全文: http://www.udpwork.com/item/14114.html

+0  从Java和JavaScript来学习Haskell和Groovy(引子)

Tag: Programming Paradigm | Groovy | Haskell | Java | JavaScript
四火 发于 2015年04月12日 13:51 | 点击: 1689 | 展开摘要
我记得刚接触计算机的时候,我就受到了两个非常巨大的错误观念的影响,这个观念最初是来自于老师的传授还是学长的教诲已经记不清了,但是直到我工作几年以后,才慢慢有了实际的体会:

学习和使用什么编程语言不重要,重要的是算法和设计;

程序员学习的精髓是面向对象的设计模式,掌握以后,一通百通。

简直就是是胡扯啊。也许在某个极其狭隘的上下文中还能这样说,但是泛泛而谈,这样的态度无疑是误人子弟的。

就说第一条,编程语言不但重要,而且太重要了。换句话说,学习一门新的编程语言,可能学习的

查看全文: http://www.udpwork.com/item/14089.html

+0  尾调用优化

Tag: JavaScript
阮一峰 发于 2015年04月10日 11:34 | 点击: 1264 | 展开摘要
尾调用(Tail Call)是函数式编程的一个重要概念,本文介绍它的含义和用法。

一、什么是尾调用?

尾调用的概念非常简单,一句话就能说清楚,就是指某个函数的最后一步是调用另一个函数。

function f(x){
return g(x);
}

上面代码中,函数f的最后一步是调用函数g,这就叫尾调用。

以下两种情况,都不属于尾调用。

// 情况一
function f(x){
let y = g(x);
return y;
}

// 情况二
func

查看全文: http://www.udpwork.com/item/14081.html

+0  React 入门实例教程

Tag: JavaScript
阮一峰 发于 2015年03月31日 15:10 | 点击: 1912 | 展开摘要
现在最热门的前端框架,毫无疑问是 React 。

上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩目程度可见一斑。

React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站。做出来以后,发现这套东西很好用,就在2013年5月开源了。

由于 React 的设计思想极其独特,属于革命性创新,性能出众,代

查看全文: http://www.udpwork.com/item/14042.html

+0  JavaScript 有多灵活?

Tag: JavaScript
阮一峰 发于 2015年02月10日 14:53 | 点击: 1424 | 展开摘要
JavaScript 是一种灵活的语言,表达力极强,我来举一个例子,保证让很多人大吃一惊。

本文受到了 Kyle Simpson 的文章《Iterating ES6 Numbers》的启发。

首先,在 Number.prototype 对象上,部署一个 add 方法。

Number.prototype.add = function (x) {
return this + x;
};

上面代码为 Number 的实例定义了一个 add 方法。(如果你对这种写法不熟悉

查看全文: http://www.udpwork.com/item/13844.html

+0  强类型 JavaScript 的解决方案

Tag: JavaScript
阮一峰 发于 2015年02月08日 13:10 | 点击: 1296 | 展开摘要
JavaScript 是一种弱类型(或称动态类型)语言,即变量的类型是不确定的。

x = 5; // 5
x = x + 'A'; // '5A'

上面代码中,变量x起先是一个数值,后来是一个字符串,类型完全由当前的值决定,这就叫弱类型。

弱类型的好处是十分灵活,可以写出非常简洁的代码。但是,对于大型项目来说,强类型更有利,可以降低系统的复杂度,在编译时就发现类型错误,减轻程序员的负担。

一直有人尝试,让 JavaScript 变成强类型语言。在官方最终支持强类型之前

查看全文: http://www.udpwork.com/item/13838.html

+0  Unicode与JavaScript详解

Tag: JavaScript
阮一峰 发于 2014年12月11日 13:45 | 点击: 1412 | 展开摘要
上个月,我做了一次分享,详细介绍了Unicode字符集,以及JavaScript语言对它的支持。下面就是这次分享的讲稿。

一、Unicode是什么?

Unicode源于一个很简单的想法:将全世界所有的字符包含在一个集合里,计算机只要支持这一个字符集,就能显示所有的字符,再也不会有乱码了。

它从0开始,为每个符号指定一个编号,这叫做"码点"(code point)。比如,码点0的符号就是null(表示所有二进制位都是0)。

U+0000 = null

上式中,U+表示

查看全文: http://www.udpwork.com/item/13623.html
|<<<2345678>>>| 一共21页, 247条记录