小鱼

Results 54 issues of 小鱼

云对雨, 雪对风, 晚照对晴空。 来鸿对去燕, 宿鸟对鸣虫。 三尺剑, 六钧弓, 岭北对江东。 人间清暑殿, 天上广寒宫。 两岸晓烟杨柳绿, 一园春雨杏花红。两鬓风霜,途次早行之客; 一蓑烟雨,溪边晚钓之翁。 沿对革, 异对同, 白叟对黄童。 江风对海雾, 牧子对渔翁。 颜巷陋, 阮途穷, 冀北对辽东。 池中濯足水, 门外打头风。 梁帝讲经同泰寺,汉皇置酒未央宫。 尘虑萦心,懒抚七弦绿绮; 霜华满鬓,羞看百炼青铜。 贫对富, 塞对通, 野叟对溪童。 鬓皤对眉绿,...

小章鱼读过的诗

> 李白 花间一壶酒,独酌无相亲。 举杯邀明月,对影成三人。 月既不解饮,影徒随我身。 暂伴月将影,行乐须及春。 我歌月徘徊,我舞影零乱。 醒时同交欢,醉后各分散。 永结无情游,相期邈云汉。

小章鱼读过的诗

> 温斯顿·格鲁姆 生命就像一盒巧克力, 结果往往出人意料。 巧克力有不同口味, 看不出来,只有品尝, 才知道是不是自己喜欢的。 人生也是, 你不知道明天,甚至是下一分钟, 你的人生将发生什么改变。 你能做的就是, 珍惜现在生活中的每一分钟, 尽量做好每一件事。

小章鱼读过的诗

# 通常来说,提起递归,就会想到阶乘;想起阶乘就会想到自己既不喜欢数学也不喜欢历史;所以也就是说无论从客观层面(数学)上来说,还是从非客观(历史,通常更像故事而不是真实)都不喜欢,那就是任性;任性的结果是这些科目成绩不好,成绩不好就只能考法学院;考法学院还不好好学习,就只能写代码,写代码又要搞递归;递归又要回到阶乘。所以,还是贴个图片并从维基百科拿来一句定义吧:一个正整数的阶乘/层(英语:factorial)是所有小于及等于该数的正整数的积,并且有0的阶乘为1。 ![](https://upload.wikimedia.org/math/b/4/9/b4980e1f33fa5b36f4250698d6fc4d6e.png) 又要来逼死文科生了:递归,在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。那我们用递归实现一个阶乘吧: ``` js function factorial(n) { return n ? (n * factorial(n - 1)) : 1; } ``` 好了,完美,不过《 JS 高级程序设计》里提及过一个问题,函数作为一个引用类型,在递归里,如果我们使用函数名来调用自身,可能会存在一个指向的问题(引用类型在有引用时,指向的对象是不会被回收(GC)的,对吧?!),看下面的代码: ``` js var f = factorial;...

现在,用 jQuery 的公司还很多,但是拿出来说的已经很少了。还有 15 分钟就要去跑步,加上老婆还在整天跟 jQuery 打交道,写两句说明一下。拿官方的例子说明一下: ``` js // 避免冲突,创建一个函数自执行函数,并把 `jQuery` 传入 (function( $ ) { // 用 `$.fn.插件名` 来定义一个新的插件 // 关于插件为什么不用 `new`,`$.fn` 是什么意思,可以看: // http://stackoverflow.com/questions/4083351/what-does-jquery-fn-mean $.fn.showLinkLocation = function()...

在处理字符串的时候,正则就非常有用。今天老婆又开始看文章了,所以我也开始更新了。举个例子,处理模板,在没有多行模板的时候,我通常会选择这样做: ``` js var person = { name: 'sofish', bio: 'a programmer'}; var tmpl = 'This is {name} and he is {bio}.'; var output = tmpl.replace(/\{(\w+)\}/g, function(match, group1) { return...

觉得 angular 2 的文档太难懂,想自己写,写到 template 渲染基本就挂,工作量太大,得出一个结果就是该作死一定会死,不想做死其实就写写 demo 或者有空就给人打打 patch 好了,自己写真的有点麻烦。不过在开始的时候写了一个简单的路由。实现一个基本功能,基本走向是: ``` php - constructor(): --> this.base = HTML_BASE || '/' --> this.routes = [], this.routes.notfound = --> this.current = ||...

[4 篇关于 Generator 的文章](https://davidwalsh.name/es6-generators),从入门到放弃(CSP),里面有几个重要的点: **1. 使用 `yield` 和 `return` 导致 `for...of` 结果的不同** ``` js function *foo() { yield 1; return 2; } var it = foo(); console.log( it.next() ); //...

呃,这其实是一个很大的话题,虽然说起来只有几句话。拿简单的十进制数字 `3`,如果转换成二进制: ``` js 3..toString(2) // '11' ``` 呃,浏览器里如何显示二进制呢?我们这里忽略,跳出来说一下为什么是 `3..toString()` 而不是 `3.toString()`,是不是也曾误了 `Number` 并没有 `toString` 方法?用 `..` 只是一个 hack 避开了小数点。另外可以写成 `(3).toString()` 这样就明白多了。转回来。关于如何把二进制转成 10 进制,就更简单了: ``` js parseInt('11', 2) // 3...

#### 一、避免无须有的实例化 一直很喜欢 Bootstrap 里用不 `new` 执行 js 的方式,写一个例子,阻止页面上任何 `a[preventdefault]` 标签的默认行为,并弹出它的链接: ``` js (function($) { $(document).on('click', 'a[preventdefault]', function(e) { e.preventDefault(); alert(this.href) }); })(jQuery); ``` 这种方式不需要像 `new PreventDefault('a[preventdefault]')`,在 html 中直接声明,比如 Tab...