201412-09 JavaScript 中小数和大整数的精度丢失 先来看两个问题: [crayon-6571a83da7a98959999022/] 第一个问题是小数的精度问题,在业界不少博客里已有讨论。第二个问题,去年公司有个系统的数据库在做数据订正时,发现有部分数据重复的诡异现象。本文将从规范出发,对上面的问题做个小结。 最大整数 JavaScript 中的数字是用 IEEE 754 双精度 64 位浮点数 来存储的,其格式为: [cray.... Read More >
201412-09 诡异的JavaScript [crayon-6571a83da8087002530418/] 1、JS最小的值 [crayon-6571a83da808e088655094/] 2、字符串连接 [crayon-6571a83da8091964792751/] 3、parseInt 函数 [crayon-6571a83da8094035970089/] 4、null是不是object [crayon-6571a.... Read More >
201411-15 一行代码检测IE浏览器以及IE版本 通常我们提倡特性检测,但那是针对具体的功能开发的时候,如果要检测浏览器类型以及版本,就不应该使用特性检测了。例如我们经常检测IE6的代码是: [crayon-6571a83da85aa881445055/] 我们不能排除第三方类库为IE6增加XMLHttpRequest方法,例如这个XMLHttpRequest兼容库。 所以应该使用userAgent代理字符串来检测浏览器,这个字符串就是.... Read More >
201411-01 JavaScript:通过事件委托实现事件可配置 事件委托 在JavaScript里,通常要做的一件事是绑定事件,比如用户在页面的点击、滚动等,然后执行注册的回调函数,这样就响应了用户的某种行为。简单的例子如下: [crayon-6571a83da9138617735878/] 在用户每次点击页面上的按钮时,弹出一个对话框显示‘hello’。 在有些情况下,我们期望页面上的一些元素响应用户同样的动作,举个例子。在用户点击列表的每一项时,将其.... Read More >