ECMA-262 describes a set of keywords that might not be used as user-defined identifiers because they obtain some other, pre-defined, functionality.

Complete list of keywords

KEYWORD DESCRIPTION
break Breaks a loop execution and continues from the first next line of code.
case Used in a switch-case-default statement. Each case refers to one possibility in a flow control.
catch Used in a try-throw-catch-finally statements for debugging errors. The catch operator will "catch" and handle errors that throw statement "throws".
continue Breaks a loop execution in the current step and continues the same loop with the next following step of iteration.
default Used in a switch-case-default statement. The keyword default is added as the last option to the statement as a "back-up" plane if none of the cases catch the condition.
delete It is used to delete property from an object.
do Part of do-while loop. This kind of loops get executed at least once, before the condition is tested with the while statement.
else Part of the if-else if-else conditional statement. Used to alternate code execution if the condition does not pass the if tested expression.
finally Used in a try-throw-catch-finally statements for debugging errors. The finally operator will execute code after the catch statement handled possible errors.
for The most often conditional loop statement. Very handy for iterations because variables, expressions and iterations can be set all in the same line of code.
function The function keyword declares a function that will be executed by evoking it from some point in the code.
if Part of the if-else if-else conditional statement. It may be used as a solely condition or in a combination with else, else if detours.
in Part of the for-in statement that is used to iterate the properties from an object. The in operator refers to each key or its value from within an array (object).
instanceof The instanceof operator is used to test if a variable or some other identifier belong to (is it's instance) a certain object.
new The new operator is used to create a new instance of an object.
return Returns the ultimate value of a function.
switch Used in a switch-case-default statement. The keyword switch tests the expression, while case directs the code flow.
this Refers to an element or object that is the "owner" of the function being active (an object that "called" the function).
throw Used in a try-throw-catch-finally statements for debugging errors. The throw statement will throw errors (if any), and direct code towards catch and finally for treatment.
try The try statement is used as the parent to try-throw-catch-finally combination. The try is used to test the code, and with throw operator directs errors to a catch statement.
typeof Used to test for the data type of an identifier. Often applied in and with flow control statements.
var Declares variables.
void The void operator is used to prevent a browser from loading a link, after detecting the a tag. When a browser sees void operator, it behaves like null has been returned.
while The while statement is used to loop through a code until the exit conditions are met. Unlike the do-while statement, here the condition is tested before loop, so it may not be executed at all.
with Used to set the scope of the code within a particular object.

Complete list of reserved words

abstract enum int short
boolean export interface static
byte extends long super
char final native synchronized
class float package throws
const goto private transient
debugger implements protected volatile
double import public