摘要: 原文(被墙):http://www.2ality.com/2011/12/nodejs-shell-scripting.html你懂JavaScript吗?你需要写一个Shell脚本吗?那么你应该试一下Node.js,它很容易安装,而且很适合通过写Shell脚本来学习它.访问参数你可以通过process.argv来访问到命令行参数,它是一个包含下列内容的数组:[ nodeBinary, script, arg0, arg1, ... ]也就是说,第一个参数是从process.argv[2]开始的,你可以像下面这样遍历所有的参数:process.argv.slice(2).forEach(fun 阅读全文
posted @ 2012-09-20 22:10 紫云飞 阅读(9708) 评论(0) 推荐(1) 编辑
摘要: 原文:http://www.2ality.com/2012/02/concat-not-generic.htmlECMAScript 5.1规范中指出,数组方法concat是通用的(generic).本文反驳了这一结论,因为实际上并不是这样的.ECMAScript 5.1规范§15.4.4.4 中说到:concat函数是有意设计成通用的;它并不要求它的this值必须得是个Array对象.因此,它可以被转移到其它类型的对象上作为方法来调用.本文中的代码都使用了[]来作为Array.prototype的快捷方式.这已经是很常用的技巧了,虽然可读性差点:你通过一个对象实例访问到了Array 阅读全文
posted @ 2012-09-20 17:42 紫云飞 阅读(2012) 评论(1) 推荐(0) 编辑
摘要: 原文(被墙):http://www.2ality.com/2011/11/uncurrying-this.html本文主要讲了JavaScript中科里化和反科里化this的方法.话题来自于Brendan Eich(JavaScript之父)的一个tweet.1.反科里化(Uncurrying)this反科里化this的意思是:把一个签名如下的方法:obj.foo(arg1, arg2)转换成另外一个签名如下的函数:foo(obj, arg1, arg2)想要知道这么做有什么用,我们首先得了解一下通用方法.2.通用方法(Generic methods)通常情况下,某个特定的方法只能在某种特定类 阅读全文
posted @ 2012-09-20 14:42 紫云飞 阅读(2815) 评论(0) 推荐(1) 编辑
摘要: 原文:http://www.2ality.com/2012/03/stricter-equality.html大部分JavaScript程序员都知道:应该使用严格相等(===)来代替"普通"的相等操作(==).但是,有时候你的确需要一个比严格相等===更严格的运算符,比如说:在你想检查某个值是否是NaN的时候,又或者你想区分-0和+0的时候.本文解释了相关的知识以及ECMAScript.next中的解决办法:"is"运算符.1.检测NaN在数学上,任意值x总是与自己相等:x = x 但这条规则并不适用于 === 和 NaN:> NaN === Na 阅读全文
posted @ 2012-09-20 07:44 紫云飞 阅读(2372) 评论(5) 推荐(5) 编辑