如果我只想返回值,是否需要handle_scope
?
Handle<Value> platformName(const Arguments& a) {
HandleScope handle_scope;
return String::New("linux");
}
答案 0 :(得分:2)
假设您的函数始终是从现有范围调用的,那么您无需在此函数中声明范围。包含范围每个函数的选择在很大程度上是一个选择,是否为每个函数的垃圾收集释放内存。你可能不需要那个,而且应该定期关闭你的主要&#34;允许GC发生的范围。
如果您想在此函数中创建新范围,那么您的示例的正确返回方法是:
return handle_scope.Close(String::New("linux"));
在这种情况下,这样做不会给你额外的价值,因为在范围内没有创建本地句柄;只有你要归还的那个,无论如何都会在封闭的范围内。但是如果你在这个函数中创建了几个本地句柄,那么将它们放在一个新的范围中是值得的,这样它们就可以被GC编辑。