new Date(string) 在不同浏览器中的不同表现

最近在开发中使用了 moment(string).isValid() 去判断字符串是否为日期格式字符串。发现当字符串为 xxxx-1 时,在 Chrome 中 moment('test-1').isValid() 返回值为 true, 而当字符串为 test1 时则正确返回 false。而 Safari 则没有该问题,全部返回 false。

JavaScript 函数式编程笔记

本文为 JS 函数式编程指南 笔记

函数是一等公民

当我们说函数是“一等公民”的时候,我们实际上说的是它们跟其他对象都一样,你可以像对待其他数据结构一样对待它们。

纯函数

相同的输入产生相同的输出,并且没有副作用,即为纯函数。例如 Array.prototype.slice 是纯函数,而 Array.prototype.splice 不是纯函数。

只要函数跟外界环境发生交互,就是有副作用。但并不是说要禁止副作用,函数式的编程哲学是假定副作用是造成不正当行为的主要原因。

我的 2017

恍恍惚惚的,又一年过去了,又到了写年终总结的时间了。

学习

说到学习,这一年学到最多的是开始慢慢的脱离某些学生思维。开始全面的思考问题,对做什么事情都先有一个计划,而不是一股脑的做。就像是编程,应该大部分时间用来思考,而编码实现只是最后的一步操作。

开始慢慢的接触一些能够提升效率的工具或者方法,例如年初开始学 vim,虽然说写代码的时候效率的瓶颈并不在敲代码的速度上,但是 vim 的确对编程的体验提高不少。

下半年开始学着用番茄工作法管理时间,提高注意力。目前来说效果还不错,就是有时候番茄间的休息我还是继续在干自己的时候,这一点做得不是很好。毕竟代码一写起来并不是那么好停的。

虽然今年不是太关注 commit,但是依旧还是有着蛮多的记录的。写得比较随性,但是因为太久不写自己会觉得堕落,觉得好像少了点什么,所以总体也只是比去年少了那么一点。

2017 commit

从零开始的 Mac

昨天乱搞把电脑搞炸了,然后又误操作把系统格掉了。悲剧.. 除了在 Github 上的代码其他什么东西都没有了,心疼收集了那么久的电子书..

然后只能重装系统了,想想也好.. 是时候清理清理电脑了,正好借着这个机会整理一下。一开始使用简直烦到不行。没有安装罗技的鼠标驱动,鼠标按键无法打开 Launchpad,虽然可以用键盘快捷键,还是觉得很不舒服。还有一个很重点的是没有 Alfred,简直变得生活不能自理了。然后还有很多好用的工具要重新安装,找原先的 iTerm2 配色找了半天.. 所以说论备份的重要性..

最后我选择了 Quiver

作为一个不折腾会死星人,笔记软件也是我的折腾目标之一。

在此之前的纠结中我选择了为知笔记,为什么我不选择印象笔记呢?原因很简单,它对 Markdown 不支持,而我又是特别讨厌用富文本编辑器的。习惯上都是在笔记软件中写博文,然后写到差不多了粘贴到 Hexo 中然后发布。用印象笔记显然并不友好,虽然说我也可以直接在其中用 Markdown 语法写,但是那样代码块就没有办法高亮了。

万恶的BOM: 与 \ufeff

最近在搞一个 Sass 文件的编译插件,主要使用 node-sass 来进行编译,在这过程中遇到一个蛮坑的小问题。

在不压缩的情况下使用 node-sass 进行编译的样式文件没有什么问题,可以正确的编译出该有的样式。可是当进行压缩时,就出了问题了。压缩后的文件莫名奇妙的在文件最开头多了几个奇怪的字符:

Redux 源码解析

三大原则

  • 单一数据源(store)
  • state 只可读(只能通过 Reducer 生成新 State)
  • 使用纯函数执行修改(Reducer 必须为纯函数,无副作用)

Vim 全局搜索插件:ctrlsf.vim

这两天一直在看文档看源码,Vim 上用的 Ack.vim 做全局搜索,但是用起来蛮难用的。

经过一番搜索,找到了国人写的全局搜索的插件:ctrlsf.vim,经过配置之后用了起来,感觉蛮好用的。

具体效果可以查看 ctrlsf.vim

到达杭州

折腾了好几天,终于到达杭州了。原本昨天就应该入职的,活生生得等到下周一。

一个人在外面最怕的就是找地方吃饭了。安排的酒店在宝龙城市广场附近,但是一个人实在是不想去商场里面吃那些东西。问了一下小伙伴的建议,跑去附近吃了个麻辣烫。

React 初始化渲染

该文章将阅读 React 初始化渲染相关的代码,并实现一个简单的将 JSX 渲染到页面的功能。(不包括组件生命周期与事件处理相关部分)