An empty statement is used to provide no statement, although the JavaScript syntax would expect one.
Syntax
;
Description
The empty statement is a semicolon (;) indicating that no statement will be executed, even if JavaScript syntax requires one. The opposite behavior, where you want multiple statements, but JavaScript only allows a single one, is possible using a block statement; it combines several statements into a single one.
Examples
The empty statement is sometimes used with loop statements. See the following example with an empty loop body:
var arr = [1, 2, 3]; // Assign all array values to 0 for (i = 0; i < arr.length; arr[i++] = 0) /* empty statement */ ; console.log(arr) // [0, 0, 0]
Note: It is a good idea to comment the intentional use of the empty statement, as it is not really obvious to distinguish between a normal semicolon. In the following example the usage is probably not intentional:
if (condition); // Caution, this "if" does nothing! killTheUniverse() // So this gets always executed!!!
Another Example: An if...else
statement without curly braces ({}
). If three
is true
, nothing will happen, four
does not matter, and also the launchRocket()
function in the else
case will not be executed.
if (one) doOne(); else if (two) doTwo(); else if (three) ; // nothing here else if (four) doFour(); else launchRocket();
Specifications
Specification | Status | Comment |
---|---|---|
{{SpecName('ESDraft', '#sec-empty-statement', 'Empty statement')}} | {{Spec2('ESDraft')}} | |
{{SpecName('ES6', '#sec-empty-statement', 'Empty statement')}} | {{Spec2('ES6')}} | |
{{SpecName('ES5.1', '#sec-12.3', 'Empty statement')}} | {{Spec2('ES5.1')}} | |
{{SpecName('ES3', '#sec-12.3', 'Empty statement')}} | {{Spec2('ES3')}} | |
{{SpecName('ES1', '#sec-12.3', 'Empty statement')}} | {{Spec2('ES1')}} | Initial definition. |
Browser compatibility
{{CompatibilityTable}}
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
See also
- {{jsxref("Statements/block", "Block statement")}}