What is the difference between a proofreader and a copy editor?

The difference between a proofreader and a copy editor is this: a proofreader is tasked with the task of converting text into an exact copy. By this definition, anyone who has ever worked in a proofreading or copy editing department has been a copy editor (this is not to say that a proofreader doesn’t sometimes work as one, as that would be a whole other conversation altogether). A copy editor is tasked with converting text into something that’s closer to what has been intended, and in this case, that often includes changing formatting, typos, grammar, and other forms of wordplay. The differences between the two responsibilities are significant, but I’d like to keep this discussion focused on the former.

So with this in mind, let’s now take a look at a different set of tasks that you’ll notice that the proofreaders and copy editors commonly work on: those that make up the editing process.

The editing process is not just about reading and rewriting text, though that may sound more or less obvious. It’s a very specific way of creating an edit of a particular portion of code. Here’s what a simple JavaScript function might look like after it’s been edited by a proofreader and a copy editor:

function addToArray(aObject) { this.a = aObject.getOwnPropertyDescriptor(); var bObject; for (bObject =, aObject); bObject != null; bObject = bObject.value) { if (bObject.getOwnPropertyDescriptor() == this.a.getOwnPropertyDescriptor()) { bObject = bObject, this.a = bObject; return true; } } this.a = this.a.length; return false; } addToArray(0);

There are several different processes that take place in this piece of code before it’s finally compiled into an output of array. The function addToArray is the first of the process, and it involves a bit of JavaScript trickery. This might make it seem like it’s fairly simple stuff, but it is. It’s worth taking a short break, though, and looking at an example of this process in action. In this case, the function is iterated for as long as the document still exists, and then we return false.

function addToArray(A) { if (!document.body.length) { return true; } var bObject; for (bObject