今天在看js的Array的方法时, 看到源码中有下面的一段代码, 挺有意思, 是关于位运算的, 就拿来研究了一下:
1 | var len = t.length >>> 0; |
这里使用了 >>>
,无符号右移运算符, 还右移了 0 位, 初看有点蒙, 到底啥意思? 带着疑问做了如下实验:
1 | console.log(1 >>> 0); //1 |
从结果来看,不管是什么类型的数据,都被强制转换成了整型。 为什么 >>>
运算符会如此呢?这要从js的位运算符说起。
coolcao的code点滴
今天在看js的Array的方法时, 看到源码中有下面的一段代码, 挺有意思, 是关于位运算的, 就拿来研究了一下:
1 | var len = t.length >>> 0; |
这里使用了 >>>
,无符号右移运算符, 还右移了 0 位, 初看有点蒙, 到底啥意思? 带着疑问做了如下实验:
1 | console.log(1 >>> 0); //1 |
从结果来看,不管是什么类型的数据,都被强制转换成了整型。 为什么 >>>
运算符会如此呢?这要从js的位运算符说起。
我们都知道,在计算机的内部,所有的数据都是以二进制的形式存储的,为了区分正数和负数,在最高位拿出来当作符号位,0表示正数,1表示负数。而且,负数的存储,除了最高位的符号位,其他位使用的是补码的形式存储的。
计算一个数值的二进制补码,以下3个步骤:
做js的时候,也没仔细的研究过==和===两个操作符之间的具体区别,但是本着实事求是的态度,今天上网查了一下他们两个的区别,最后得出的结论是:
1 | `===` 严格相等,会比较两个值的类型和值 |
然后我就更迷惑了,先类型转换,我擦,怎么转换,左边转换成右边类型还是右边转换成左边类型?
在es6中新添加了一个Promise对象,其实这并不是“新”的概念,很早之前就有了promise规范,在es6之前有很多第三方库对其做了实现,es6对其进行原生实现。Promise规范的提出是为了解决异步编程中回调函数的“滥用”。
在es6中引入的原生Promise为js的异步回调问题带来了一个新的解决方式,而TJ大神写的co模块搭配Generator函数的同步写法,更是将js的异步回调带了更优雅的写法。
今天我想对比一下这两种方式,来看看这两种方式的区别以及优劣。
angular除了几个自带的常用的filter,还可以自定义filter,以满足不同的需求,简单研究了一下自定义filter,记录一下。
有如下场景,后台返回的数据中,status可能是英文字符串,如果在html中使用if进行挨个判断,则显得有些啰嗦,这样我们就可以使用自定义的filter实现
在gulp中定义多个任务,可能一个任务要依赖其他某个任务完全结束后才能开始进行,比如,我们先定义两个任务,一个coffee任务,一个clean任务,coffee用于编译coffee代码到js代码,clean用于清理已经编译的代码,在编译之前先clean一下:
在angular中内置了几个常用的filter,可以简化我们的操作。
过滤器使用 ‘|’ 符号,概念有点类似于Linux中的管道。
前两天因项目需要,简单看了一下FiddlerScript,功能挺强的,今天有时间仔细看一下,做个笔记。
修改Request或Response
修改Request和Response要在FiddlerScript中的OnBeforeRequest和OnBeforeResponse函数中添加规则即可。OnBeforeRequest函数是在每次请求之前调用,OnBeforeResponse函数是在每次响应之前调用。