文档中方法参数列表中"in"的单词是什么意思?



很抱歉,这个问题可能很愚蠢,但我希望你能宽容一点,因为我只是不喜欢在阅读文档时留下一些空白。

考虑以下来自developer.mozilla.org的代码片段:
void initCustomEvent(
    in DOMString type,
    in boolean canBubble,
    in boolean cancelable,
    in any detail
);

据我所知,在JavaScript中没有像void这样的语法。但这只是一种约定,说明该方法不返回任何东西。(如果我说错了,请纠正我)。

但什么意思 ?

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

下面是MDN文档中包含"out-parameter"的示例:

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-parameter"在JavaScript中并不流行,但似乎在C或c++中更常见,这是开发Firefox的语言。

正如c.P.u1所暗示的,这不是JavaScript语法,这只是对接口的描述。Mozilla开发并使用了XPIDL。来自他们的文档:

每个方法参数可设置为inoutinout三种模式。out参数本质上是一个辅助返回值,尽管在脚本上下文中使用这些值比较麻烦,因此应该在合理的情况下避免使用。inout参数是一个in参数,其值可能会因该方法而改变;这些参数使用起来相当麻烦,通常应该尽量避免使用。


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

相关内容

最新更新