如何将"Go to Declaration"与 NetBeans 和 JavaScript 一起使用?



我知道我们可以在NetBeans中使用Ctrl+Click或Ctrl+B,但当我编写javascript文件时,它不适合我。

我不是唯一一个(遗憾的是这个问题没有答案)。

我可以看到导航器上的函数,但是我不能使用"Go to声明"。

我是这样声明函数的:

function anyName(params...) { ... }

我试着改成这个样式:

var anyName = function (params...) { ... }

但这也行不通。

我使用的是Netbeans 6.9.1.

更多信息:

  1. NetBeans在javascript中支持"Go to declaration"。
  2. 就像我说的,这个函数是被识别的,因为我可以在导航器中看到它。
  3. 我可以使用Ctrl+O,然后搜索我的函数,NetBeans可以在我这样做时找到它。我现在用这个来代替"Go to declaration"。
  4. 我注意到我也没有代码完成。按照上面的例子,如果我写"an"(Ctrl+Space),我可以看到很多函数和方法,但我找不到我的函数(anyName)。

我想我做错了什么,但我不知道是什么。

我认为简短的答案是NetBeans没有一个很好的JavaScript解析器。JS是一种松散类型的语言,要"转到"函数的实际定义可能非常困难。以下是一些例子:

function callStuff(myFunc)
{
   myFunc(); //Where does this go?
}
callStuff(function () { window.alert(123); });

或:

var x = {
  X: function () { },
  Y: function () { },
};
x.Z = function () { };
x.Y(); //Where do I go?
x.Z(); //How about this?

或者:

string s = "window.alert(123);";
var callback = Function(s);
callback(); //Now we just made a function with a string, weird..

因此,正如您所看到的,JavaScript IDE需要对脚本的运行时执行有大量的了解,才能准确地找出函数的定义位置。如果您使用标准语法或非常明显的函数声明,有一些ide可以很好地做到这一点,但我还没有看到在这方面有什么非常有用的东西。这很可能不是NetBeans真正努力支持的东西,因为它是一个以java为中心的IDE。

问题似乎在于将一切定义为"全局"。如果您在自己的名称空间中工作——也就是说,创建一个全局对象并定义其中的所有内容——那么Netbeans可以更好地理解您的代码在哪里,并且还可以为您提供类型提示。

相关内容

  • 没有找到相关文章

最新更新