molily: jslint und Crockfords memoizer-Funktion

Beitrag lesen

--- In jslint_com@yahoogroups.com, "Douglas Crockford" <douglas@> wrote:

There are some cases where it is troublesome to use a variable while it is
being initialized, such as

var x = x + 1;

Der Fall ist ziemlich konstruiert, wieso sollte man auf diese Idee kommen und was sollte man als Ergebnis erwarten?

Man kann schon in der Deklaration auf den Variablenwert zugreifen, er ist dann undefined. Es kommt natürlich NaN heraus, wenn man undefined + 1 rechnet. Okay, das ist Quatsch. Aber dieses Pattern ist eigentlich in Ordnung:

var foo = foo || [1,2,3];

Wenn schon eine Variable foo existiert, dann nimmt er diese, sofern der Wert truthy ist. Dann wird die Redeklaration ignoriert.

Andernfalls legt er eine Variable an. Dann hat wegen dem Hoisting von Variable Declarations die Variable auf jeden Fall den Wert undefined, also nimmt er [1,2,3].

Das Pattern ist zwar nicht so häufig, aber »troublesome« ist es nun nicht per se.

Mathias