最新 | 最热门 | 最高评价

+0  JavaScript 运行机制详解:再谈Event Loop

Tag: JavaScript
阮一峰 发于 2014年10月08日 21:11 | 点击: 1795 | 展开摘要
一年前,我写了一篇《什么是 Event Loop?》,谈了我对Event Loop的理解。

上个月,我偶然看到了Philip Roberts的演讲《Help, I'm stuck in an event-loop》。这才尴尬地发现,自己的理解是错的。我决定重写这个题目,详细、完整、正确地描述JavaScript引擎的内部运行机制。下面就是我的重写。

进入正文之前,插播一条消息。我的新书《ECMAScript 6入门》出版了(版权页,内页1,内页2),铜版纸全彩印刷,非常精

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

+0  前端模块管理器简介

Tag: JavaScript
阮一峰 发于 2014年09月14日 10:13 | 点击: 1484 | 展开摘要
模块化结构已经成为网站开发的主流。

制作网站的主要工作,不再是自己编写各种功能,而是如何将各种不同的模块组合在一起。

浏览器本身并不提供模块管理的机制,为了调用各个模块,有时不得不在网页中,加入一大堆script标签。这样就使得网页体积臃肿,难以维护,还产生大量的HTTP请求,拖慢显示速度,影响用户体验。

为了解决这个问题,前端的模块管理器(package management)应运而生。它可以轻松管理各种JavaScript脚本的依赖关系,自动加载各个模块,使得网页结

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

+0  《ECMAScript 6入门》上线了

Tag: JavaScript
阮一峰 发于 2014年04月30日 12:36 | 点击: 1972 | 展开摘要
过去的一个月,我写了一本书《ECMAScript 6入门》,今天上线了。

网址:es6.ruanyifeng.com

ES6是JavaScript语言的下一个版本,预计将在2014年底正式发布。它对JavaScript做了大量改造,提高了灵活性和应用性,使得这门语言真正成为了企业级开发工具。

但是,ES6也使得JavaScript变得更抽象、更难学了。我把自己过去一年的学习笔记,做成了这本书,采用创意共享开源许可证,源码放在Github上面。欢迎大家访问,多提宝贵意见

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

+0  Firefox中“max-width:100%”不兼容问题

Tag: CSS | 浏览器兼容 | JavaScript
youngsterxyf 发于 2014年04月28日 00:00 | 点击: 4009 | 展开摘要
这个博客是基于“Pelican + Markdown +
定制的my-gum主题”的。定制的主题将博文正文页面的
右边栏去掉,这导致在Firefox等浏览器中,正文中大的图片会突破正文块的宽度,高度也得不到限制,显示效果非常差。

其原因是:Markdown的图片区块元素![Alt
text](/path/to/img.jpg)渲染成HTML元素的结果为 -

<p>
<img src="/path/to/img.jpg" alt

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

+0  undefined与null的区别

Tag: JavaScript
阮一峰 发于 2014年03月28日 11:13 | 点击: 1487 | 展开摘要
大多数计算机语言,有且仅有一个表示"无"的值,比如,C语言的NULL,Java语言的null,Python语言的None,Ruby语言的nil。

有点奇怪的是,JavaScript语言居然有两个表示"无"的值:undefined和null。这是为什么?

一、相似性

在JavaScript中,将一个变量赋值为undefined或null,老实说,几乎没区别。

var a = undefined;

var a = null;

上面代码中,a变量分别被赋值为undefi

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

+0  多重继承的演变

Tag: Programming Paradigm | Recommended | C++ | Go | Java | JavaScript | Ruby | Scala | 多重继承 | 接口 | 继承
四火 发于 2014年03月19日 14:45 | 点击: 1694 | 展开摘要
本来想告一段落别写编程范型的东西,但是这个话题最近发现很有意思,就拣出来唠一唠。从中除了能看出很多有趣的语言特性,观察不同语言的设计,还可以发现程序语言的发展过程。这里谈到的语言特性,都是从C++的多重继承演变而来的,都没法完整地实现和代替多重继承本身,但是有了改进和变通,大部分功能保留了下来,又避免了多重继承本身的问题。

C++的多重继承

这个问题我觉得需要从老祖宗C++谈起,我记得刚开始学C++的时候老师就反复教育我们,多重继承的问题。比如说二义性问题,也就是说,两个

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

+0  如何捕获和分析 JavaScript Error

Tag: error | javascript | logging
Cat Chen 发于 2014年03月18日 10:38 | 点击: 1639 | 展开摘要
前端工程师都知道 JavaScript 有基本的异常处理能力。我们可以 throw new Error(),浏览器也会在我们调用 API 出错时抛出异常。但估计绝大多数前端工程师都没考虑过收集这些异常信息。反正只要 JavaScript 出错后刷新不复现,那用户就可以通过刷新解决问题,浏览器不会崩溃,当没有发生过好了。这种假设在 Single Page App 流行之前还是成立的。现在的 Single Page App 运行一段时间后状态复杂无比,用户可能进行了若干输入操作才

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

+0  编程范型:工具的选择

Tag: Programming Paradigm | Recommended | AOP | Groovy | JavaScript | 元编程 | 动态语言 | 编程范型
四火 发于 2014年03月10日 19:19 | 点击: 1479 | 展开摘要
这是我写的关于编程范型的文章中最后一篇。

在《编程的未来》里面提到过,很多时候脑子里的算法还是不容易转变成代码,大部分情况下这不是你编码技巧的问题,而是编程语言的问题,或者更严格地说,是编程语言选择的问题。除了复杂性这个软件唯一的敌人,其它真正的困难,早就被数学家们解决了,如果问题和它的解决能够用数学轻松地表述出来,那计算机只是工具而已。极端地说,如果有合适的工具,那么就选择一个;如果没有,那么可以创造一个。仅此而已。

工程师的乐趣,大抵在解决实际问题上,既有解决问题的成

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

+0  借助AngularJS写优雅的代码

Tag: JavaScript | Recommended | AngularJS | 事件 | 依赖注入 | 数据绑定 | 编程范型
四火 发于 2014年02月27日 11:06 | 点击: 1748 | 展开摘要
接触AngularJS还真有点碰巧,在用JQuery写数据绑定的时候,我被数据对象和DOM之间的同步整烦了,要写一大堆方法绑定和取值/设值的代码逻辑,丑得要死。简单说来,就是:

数据对象发生变更以后,要及时更新DOM树;

用户操作改变DOM树以后,要回头更新数据对象。

这个问题还是举例来说清楚一些,比如我定义了这样一个queryObj:

{name: "sally", price: 30}

现在有这样的DOM对象:

<input type

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

+0  跨域方法汇总

Tag: JavaScript | Recommended | Cookie | flash | iFrame | script | window | 跨域
四火 发于 2014年02月13日 11:12 | 点击: 2301 | 展开摘要
做Web开发经常需要面对跨域问题,跨域问题的根源是浏览器安全中的同源策略,比如说,对于http://www.a.com/1.html来说:

http://www.a.com/2.html是同源的;

https://www.a.com/2.html是不同源的,原因是协议不同;

http://www.a.com:8080/2.html是不同源的,原因是端口不同;

http://sub.a.com/2.html是不同源的,原因是主机不同。

在浏览器中,<script

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

+0  从JavaScript的单线程执行说起

Tag: JavaScript | sleep | Web Worker | 单线程
四火 发于 2014年01月21日 14:46 | 点击: 2268 | 展开摘要
先看一段代码:

setTimeout(function(){
alert("a");
}, 0);
while(1);
alert("b");

希望在马山可以弹出一个警告提示框“a”来,但是始终没有来;而且,在FireFox中跑还得到了这样的提示,并提示你是否要终止这段脚本的执行,遇事我选择终止以后,“a”倒是弹出来了,但是“b”却弹不出来了:

Warning: Unresponsive Script

A script on this page may be bus

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

+0  函数式编程

Tag: Python | 程序设计 | 编程语言 | functional | Javascript | 函数式
陈皓 发于 2013年12月27日 08:11 | 点击: 2809 | 展开摘要
当我们说起函数式编程来说,我们会看到如下函数式编程的长相:

函数式编程的三大特性:

immutable data 不可变数据:像Clojure一样,默认上变量是不可变的,如果你要改变变量,你需要把变量copy出去修改。这样一来,可以让你的程序少很多Bug。因为,程序中的状态不好维护,在并发的时候更不好维护。(你可以试想一下如果你的程序有个复杂的状态,当以后别人改你代码的时候,是很容易出bug的,在并行中这样的问题就更多了)

first class functions:这

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