我知道我们可以在NetBeans中使用Ctrl+Click或Ctrl+B,但当我编写javascript文件时,它不适合我。
我不是唯一一个(遗憾的是这个问题没有答案)。
我可以看到导航器上的函数,但是我不能使用"Go to声明"。
我是这样声明函数的:
function anyName(params...) { ... }
我试着改成这个样式:
var anyName = function (params...) { ... }
但这也行不通。
我使用的是Netbeans 6.9.1.
更多信息:
- NetBeans在javascript中支持"Go to declaration"。
- 就像我说的,这个函数是被识别的,因为我可以在导航器中看到它。
- 我可以使用Ctrl+O,然后搜索我的函数,NetBeans可以在我这样做时找到它。我现在用这个来代替"Go to declaration"。
- 我注意到我也没有代码完成。按照上面的例子,如果我写"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可以更好地理解您的代码在哪里,并且还可以为您提供类型提示。