
Inline adoc files when they are included exactly once. Also fix language tags because this inlining gives us better information on what language the code is written in.
65 lines
1.0 KiB
Plaintext
65 lines
1.0 KiB
Plaintext
== 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[]
|