4

对于可能愚蠢的问题,我很抱歉,但我请你宽容,因为我只是不喜欢在阅读文档时留下一些空白。

考虑以下来自developer.mozilla.org的片段:

void initCustomEvent(
    in DOMString type,
    in boolean canBubble,
    in boolean cancelable,
    in any detail
);

据我所知,JavaScript 中没有这样的语法,例如void. 但这只是一个约定,该方法不返回任何内容。(如果我错了,请纠正我)。

但这意味着什么

4

1 回答 1

4

这意味着参数是“in-parameter ”,即值进入函数,与“out-parameters”相反,函数将数据添加到该参数或内存中的该位置,然后可以进一步使用调用代码。

这是MDN 文档中包含“输出参数”的示例:

void get(
  in string prop,
  in nsIIDRef iid,
  [iid_is(iid),retval] out nsQIResult result
);

还有一个 JavaScript 示例:

function range(n, result) {
    for (var i = 0; i < n; i++) {
        result.push(i);
    }
}

// to be called as
var foo = [];
range(10, foo);
console.log(foo); // shows [0,1,2,3,4,5,6,7,8,9]

“out-parameters”在 JavaScript 中并不流行,但在开发 Firefox 的语言 C 或 C++ 中似乎更常见。

正如cPu1所暗示的,这不是 JavaScript 语法,这只是对接口的描述。Mozilla 开发并使用了XPIDL。从他们的文档中:

每个方法参数都可以指定为以下三种模式之一:inoutinout。参数本质上是一个out辅助返回值,尽管从脚本上下文中使用这些参数比较麻烦,因此如果合理的话应该避免使用。参数是一个inoutin 参数,其值可能会因方法而改变;这些参数使用起来相当烦人,通常应尽可能避免使用。


你是对的,void意思是函数不返回任何东西,但是void操作符确实存在(虽然它与接口描述无关)。

于 2013-06-18T17:56:46.927 回答