数组去重

原始变量

如果一个数组只包含原始变量,我们可以使用filterindexOf方法将其去重:

阅读更多

赋值技巧

赋值是很常见的。有时候打字对于我们这些“懒惰的程序员”来说是很费时间的。
所以,我们可以使用一些小把戏来使我们的代码更清楚更简单。

阅读更多

Javascript多维数组扁平化

下面是将多位数组转化为单一数组的三种不同方法。

阅读更多

Map()的营救;使对象属性有顺序

对象属性顺序

阅读更多

扩展插件中观察DOM的变化

MutationObserver是监听DOM变化与当元素变化时做适当操作的一个解决方法。在下面的例子中我们使用计时器模拟了内容的动态加载,第一个元素”target”创建后,创建”subTarget”。
在扩展中的代码,rootObserver首先开始工作,直到targetElement被创建后rootObserver停止,然后elementObserver开始工作。这个级联观测可以在发现subTargetElement时提醒你。
这个方法在为动态加载内容的网站开发扩展插件时,是很有用的。

阅读更多

仅用一行生成`[0, 1, ..., N-1]`数列

使用下面一行代码,我们就可以生成0…(N-1)数列。

阅读更多

实现异步循环

让我们试着写一个异步方法,每秒打印一次循环的索引值。

阅读更多

Javascript高级特性

在Javascript里配置对象属性是可以实现的,比如将一个参数设为伪私有或者只读。这个特性从ECMAScript 5.1开始就可以使用了,因此近来的浏览器都是支持的。
要实现这些功能,你需要使用Object的原型方法defineProperty,像这样:

阅读更多

柯里化(currying)与部分应用(partial application)

柯里化(currying)

阅读更多

运用存储加速递归 Speed up recursive functions with memoization

大家对斐波那契(Fibonacci)数列都很熟悉。我们可以再20秒内写出下面这样一个方法。

阅读更多

避免修改和传递`arguments`给其他方法 — 影响优化

背景

在JavaScript的方法里,arguments参数可以让你访问传递给该方法的所有参数。arguments是一个类数组对象arguments可是使用数组标记访问,而且它有length参数,但是它没有filtermapforEach这样内建到数组内的方法。因此,如下代码是一个非常常见的将arguments转换为数组的办法:

阅读更多

转换为数字的更快方法

将字符串转换为数字是极为常见的。最简单和快速的方法(jsPref)+(加号) 来实现。

阅读更多

使用 === 而不是 ==

== (或者 !=) 操作在需要的情况下自动进行了类型转换。=== (或 !==)操作不会执行任何转换。===在比较值和类型时,可以说比==更快(jsPref)。

阅读更多

过滤并排序字符串列表

你可能有一个很多名字组成的列表,需要过滤掉重复的名字并按字母表将其排序。

阅读更多

使用立即执行函数表达式

立即执行函数表达式( IIFE - immediately invoked function expression)是一个立即执行的匿名函数表达式,它在Javascript中有一些很重要的用途。

阅读更多