javascript中的那些坑

Array.sort()

数组的默认排序是 按照字典排序 的,即使用字符串比较(原因想想也知道)

所以就可能出现以下情况:

1
2
3
4
[9,80,3,10,5,6].sort()

// [ 10, 3, 5, 6, 80, 9 ]
// Oops!

教训:一定一定要在使用数组排序方法传入比较函数啊

JavaScript函数

this

1. 全局范围内使用this,它会指向全局对象

1
this;

浏览器中的全局对象为Window

2. 函数调用时,this会指向全局对象

1
foo();

注意:在对象里调用函数(不是方法),this也会指向全局对象,这会导致一些奇怪的问题 ECMAScript5严格模式下不存在全局对象,因此thisundefined

CSS3新特性与浏览器兼容

Flexbox

dive into flexbox

background

注意事项:

  1. 加载图片失败时UA会使用background-color,所以在设置background-image时一定要同时设置background-color作为fallback
  2. 设置前景色color时,要同时设置background-color,反之亦然
  3. 使用rgba的时候也要设置fallback color

linear-gradient

渐变背景

Python鸭子类型与C++多态

鸭子类型是什么

经常听别人说Python是一个动态语言,而鸭子类型是Python重要的设计哲学之一。鸭子类型(duck typing)的原话是:

如果看起来像鸭子、叫起来像鸭子、走起路来也像鸭子,那它就是鸭子

同步Github Fork的项目

Track

添加上游 upstream

git remote add upstream git@github.com:user/project.git

Update

每次更新时,执行下列命令

git fetch upstream
git rebase upstream/master

有文件冲突时会提示,解决冲突后用以下命令继续rebase

git rebase --continue

这里使用rebase而不是merge主要是因为使用merge的话会使git的线变得复杂 一般使用rebase只会有一条线