代码
从前有个代码长这样
if (a) {
if (b) {
c
}
} else {
if (d) {
c
}
}
后来长这样
if (a && b || !a && d) {
c
}
再后来长这样。
if (a? b : d) {
c
}
every 解决foreach中的return
有时候,我们需要从数组中筛选一些东西,filter当然可以,但是有些定制化的东西就很难,而且,在foreach中不能return。every 解决foreach中的return
array.every( item => {
if (...){
// some code
return false
} else {
return true
}
})
用!~代替 === -1
不过可能不容易看懂
!~ -1 // true
!~[1].indexof(1) // false
常用code utils
函数节流
2次执行间隔为x ms
var tr = function (time, fn) {
this.fn = fn;
this.time = time
this.buffer = [];
this._lastTriggerTime = 0;
}
tr.prototype._flushIfNeeded = function() {
var start = Date.now();
if ( this.buffer.length <=0 || start - this._lastTriggerTime <= this.time) {
return;
}
this.fn(this.buffer.pop());
this.buffer = [];
this._lastTriggerTime = Date.now();
setTimeout(this._flushIfNeeded.bind(this), this.time);
}
tr.prototype.trigger =function (arr) {
this.buffer.push(arr);
this._flushIfNeeded();
}
var nf = new tr(1000, function(arr){
console.log(arr);
});
nf.trigger('hallo');
nf.trigger('hallo');
nf.trigger('hallo');
deepClone
function deepClone(obj){
var res=Array.isArray(obj)?[]:{};
for(var key in obj){
if (typeof obj[key]=="object") {
res[key]=deepClone(obj[key]);
}else{
res[key]=obj[key];
}
}
return res;
}
Function.prototype.bind shim
function bind (context) {
var target = this
var bindArgs = Array.prototype.slice.call(arguments, 1)
function bound () {
var callArgs = Array.prototype.slice.call(arguments)
if (this instanceof bound) { // 判断bind后的函数是不是通过new来调用的。如果是就指向自己,不然就指向context
return target.apply(this, callArgs.concat(bindArgs))
} else {
return target.apply(context, callArgs.concat(bindArgs))
}
}
// 实现继承,让bound函数生成的实例通过原型链能追溯到target函数
// 即 实例可以获取/调用target.prototype上的属性/方法
var Empty = function () {}
Empty.prototype = target.prototype
bound.prototype = new Empty() // 这里如果不加入Empty,直接bound.prototype = target.prototype的话.改变bound.prototype则会影响到target.prototype,原型继承基本都会加入这么一个中间对象做屏障
bound.prototype.constructor = bound; // constructor修正,防止调用constructor函数出错
return bound
}
用fixup 和autosquash让git commit 更清楚
某个正常的提交
git add .
git commit -m "feature A"
git log --graph --pretty=oneline --abbrev-commit
如果我的feature A有bug可以这样操作:
git add .
git commit --fixup 8831bd1 -> feature A的id
然后用autosquash合并两个commit
git rebase -i --autosquash 4dd17ad -> feature A的前一个id
git会自动帮你找出fixup的提交,和正常提交合并,你只需要在vim里面直接保存就可以了。
随手记一个漂亮的code的更多相关文章
-
一个漂亮的php验证码类
一个漂亮的php验证码类(分享) 作者: 字体:[增加 减小] 类型:转载 下面小编就为大家分享一个漂亮的php验证码类.需要的朋友可以过来参考下 直接上代码: 复制代码 代码如下: //验证 ...
-
一个漂亮的js表单验证页面+验证码
一个漂亮的js表单验证页面 见图知其意, 主要特性 带密码安全系数的判断 其他的就没有啥啦 嘿嘿嘿 当然,其代码也在Github上 我也准备了一套可以直接Ctrl + v; Ctrl + c 运行的代 ...
-
PHP入门培训教程 一个漂亮的PHP验证码
如何写一个漂亮的PHP验证码?兄弟连PHP培训 小编分享一段代码给大家: <?php class Imagecode{ private $width ; private $height; pri ...
-
ctex moderncv版本更新--用latex写一个漂亮的简历
我的电脑是win7系统32位,ctex版本是v2.9.2.164 full(http://www.ctex.org/CTeXDownload) 一直不太清楚moderncv里面类似\cventry这种 ...
-
PS网页设计教程XXIV——从头设计一个漂亮的网站
作为编码者,美工基础是偏弱的.我们可以参考一些成熟的网页PS教程,提高自身的设计能力.套用一句话,“熟读唐诗三百首,不会作诗也会吟”. 本系列的教程来源于网上的PS教程,都是国外的,全英文的.本人尝试 ...
-
分享一个漂亮的ProgressBar控件
codeprject上看到的一个漂亮的ProgressBar控件.是用vb.net开发的. C#直接在工具箱中引用即可. 地址:http://www.codeproject.com/Articles/ ...
-
小强的HTML5移动开发之路(5)——制作一个漂亮的视频播放器
来自:http://blog.csdn.net/dawanganban/article/details/17679069 在前面几篇文章中介绍了HTML5的特点和需要掌握的基础知识,下面我们开始真正的 ...
-
给Ajax一个漂亮的嫁衣——Ajax系列之五(下)之序列化和反序列化
给Ajax一个漂亮的嫁衣——Ajax系列之五(下)之序列化和反序列化 标签: ajaxdictionaryjsonobject服务器function 2012-07-25 18:41 2242人阅读 ...
-
一个漂亮而强大的自定义view
代码地址如下:http://www.demodashi.com/demo/13502.html 简介 主要提供一个漂亮而强大的自定义SeekBar,进度变化由提示牌 (sign)展示,具有强大的属性设 ...
随机推荐
-
FFmpeg数据结构:AVPacket解析
本文主要从以下几个方面对AVPacket做解析: AVPacket在FFmpeg中的作用 字段说明 AVPacket中的内存管理 AVPacket相关函数的说明 结合AVPacket队列说明下AVPa ...
-
javascript获取类元素
代码测试是ie5+: 原生javascript中筛选出含有指定类的元素: 思想:在指定范围里把所有的元素筛选出来,然后把里面的每个元素都遍历找出它们含有的所有类,然后逐个元素遍历它们各自的类,如果指定 ...
-
踩刹车——regularization
从一个问题说起: 当我们使用H10去拟合曲线的时候,其实我们只想要H2的结果.如果从H10变回到H2呢? 所以我们只需要添加上限制条件:w3=...=w10=0即可.现在呢,我们可以放宽一点条件:任意 ...
-
pentaho专题之reporting design入门指南
今天来说一说pentaho表报设计工具reporting design. 进入界面之后,点击File,选择New一个表报. 这时候我们可以看见整个的设计版面了. 最上面的是工具条,最左面的是设计小 ...
-
js代码细嚼慢咽
全局变量的梗 例1: 对于var 的理解:将该变量声明在当前的作用域中,或者说执行上下文中. function add() { result = 3; //result变量即是隐喻全局变量 } add ...
-
《java入门第一季》之Character类小案例
/* * Character 类在对象中包装一个基本类型 char 的值 * 此外,该类提供了几种方法,以确定字符的类别小写字母,数字,等等,并将字符从大写转换成小写,反之亦然 * */ 下面通 ...
-
C# 切分图片
public void Slice() { // 图片路径 var file = "F;/aaa.png"; // 水平切分 ; // 纵向切分 ; ; i < horizo ...
-
bzoj 3285 离散对数解指数方程
/************************************************************** Problem: 3285 User: idy002 Language: ...
-
树莓派进阶之路 (021) - 3.2inch RPi LCD (B)
参考文档:http://www.waveshare.net/wiki/3.2inch_RPi_LCD_(B) 产品特点 320x240分辨率 电阻式触摸控制 兼容并可直接插入任何版本树莓派 提供Ras ...
-
linux查看及设置别名,权限,生成ssh秘钥
1.alias :查看系统中所有的命令别名 2.设定别名 alias 别名='原命令' 3.删除别名 unalias 别名 4.使别名永久生效 vi ~/.bashrc 写入这个文件中即可永 ...