The fact that JavaScript is not a strongly typed language allows developers a lot of freedom, but that freedom can turn into giving you enough rope to hang yourself.

Specifically, it is syntactically acceptable to invoke any expression as though its value were a function. But a `TypeError` may be raised if you do.

## Noncompliant Code Example

    foo = 1;
    foo();   // Noncompliant; TypeError

    foo = undefined;
    foo();  // Noncompliant; TypeError