== Why is this an issue? 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 [source,javascript] ---- function foo(a) { // Noncompliant if (a === 1) { return true; } return 3; } ---- === Compliant solution [source,javascript] ---- function foo(a) { if (a === 1) { return true; } return false; } ---- === Exceptions Functions returning ``++this++`` are ignored. [source,javascript] ---- function foo() { // ... return this; } ---- Functions returning expressions having type ``++any++`` are ignored. ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) === Message Refactor this function to always return the same type. === Highlighting Primary: function name/declaration Secondary: Return statements endif::env-github,rspecator-view[]