Unlike strongly typed languages, JavaScript does not enforce a return type on a function. This means that different paths through a function can return different types of values, which can be very confusing to the user and significantly harder to maintain.

== Noncompliant Code Example

----
function foo(a) {  // Noncompliant
  if (a === 1) {
    return true;
  }
  return 3;
}
----

== Compliant Solution

----
function foo(a) {
  if (a === 1) {
    return true;
  }
  return false;
}
----

== Exceptions

Functions returning ``++this++`` are ignored.

----
function foo() {
  // ...
  return this;
}
----

Functions returning expressions having type ``++any++`` are ignored.
