Any variable or function declared in the global scope implicitly becomes attached to the global object (the ``++window++`` object in a browser environment). To make it explicit this variable or function should be a property of ``++window++``. When it is meant to be used just locally, it should be declared with the ``++const++`` or ``++let++`` keywords (since ECMAScript 2015) or within an Immediately-Invoked Function Expression (IIFE). This rule should not be activated when modules are used. == Noncompliant Code Example [source,javascript] ---- var myVar = 42; // Noncompliant function myFunc() { } // Noncompliant ---- == Compliant Solution [source,javascript] ---- window.myVar = 42; window.myFunc = function() { }; ---- or [source,javascript] ---- let myVar = 42; let myFunc = function() { } ---- or [source,javascript] ---- // IIFE (function() { var myVar = 42; function myFunc() { } })(); ---- ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) include::message.adoc[] include::highlighting.adoc[] ''' == Comments And Links (visible only on this page) include::comments-and-links.adoc[] endif::env-github,rspecator-view[]