4

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

而且我不是唯一一个(遗憾的是,这个问题没有得到答复)。

我可以在导航器上看到功能,但我不能使用“转到声明”。

我以这种方式声明我的函数:

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

我尝试更改为这种样式:

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

但这也没有用。

我正在使用 Netbeans 6.9.1。

更多信息:

  1. NetBeans 支持 javascript 中的“转到声明”
  2. 正如我所说,该功能被识别是因为我可以在导航器中看到它。
  3. 我可以使用Ctrl+O然后搜索我的函数,当我这样做时,NetBeans 可以找到它。我现在用它作为“Go to Declaration”的糟糕替代品。
  4. 我注意到我也没有代码完成。按照上面的例子,如果我写“an”(Ctrl+ Space),我可以看到很多函数和方法,但我找不到我的函数(anyName)。

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

4

2 回答 2

2

我认为简短的回答是 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。

于 2011-11-02T21:26:30.287 回答
1

问题似乎在于将一切都定义为“全局”。如果您在自己的命名空间中工作(即创建一个全局对象并在其中定义所有内容),那么 Netbeans 可以更好地理解您的代码所在的位置,并且还可以为您提供类型提示。

于 2011-12-09T19:24:33.903 回答