This means that the parameter is "in-parameter", that is, the value goes into the function, unlike "out-parameters", where the function adds data to this argument or this location in memory, which can then be used further by the calling code.
Here is an example from the MDN documentation containing "out-parameter":
void get( in string prop, in nsIIDRef iid, [iid_is(iid),retval] out nsQIResult result );
And a JavaScript example:
function range(n, result) { for (var i = 0; i < n; i++) { result.push(i); } }
"out-parameters" are not popular in JavaScript, but apparently they are more common in C or C ++, which is the language of Firefox.
As cPu1 pointed out , this is not JavaScript syntax, it is just a description of the interface. Mozilla developed and used XPIDL . From their documentation:
Each method parameter can be specified in one of three modes: in , out or inout . The out parameter is essentially an auxiliary return value, although they are moderately cumbersome to use from script contexts, and should therefore be avoided if appropriate. The inout is a parameter whose value can be changed as a result of the method; these options are quite unpleasant to use and should generally be avoided, if at all possible.
You are right, void means that the function returns nothing, but the void operator exists (although this has nothing to do with the description of the interface).