VisualStudio中的JavaScript intellisense只能部分工作

VisualStudio中的JavaScript intellisense只能部分工作,javascript,visual-studio,visual-studio-2013,intellisense,javascript-intellisense,Javascript,Visual Studio,Visual Studio 2013,Intellisense,Javascript Intellisense,我在Visual Studio 2013 Express for Web中看到JavaScript intellisense的一些奇怪行为。我听从了所有我能在谷歌上找到的建议,它几乎工作得很完美。。但是,与函数的内部或外部有关的东西似乎正在影响它。我对JavaScript非常陌生,所以我可能遗漏了一些东西,但这对我来说没有任何意义: 在功能之外,它似乎部分工作。。。 (我获得了一级智能感知) (但不是两个) 但在函数内部,它工作得非常完美。。。 (我完全明白了) 在一个单独的文件中,我遇到了类

我在Visual Studio 2013 Express for Web中看到JavaScript intellisense的一些奇怪行为。我听从了所有我能在谷歌上找到的建议,它几乎工作得很完美。。但是,与函数的内部或外部有关的东西似乎正在影响它。我对JavaScript非常陌生,所以我可能遗漏了一些东西,但这对我来说没有任何意义:

在功能之外,它似乎部分工作。。。 (我获得了一级智能感知)

(但不是两个)

但在函数内部,它工作得非常完美。。。 (我完全明白了)

在一个单独的文件中,我遇到了类似的问题,但在一个函数级别下。。。 (限于此)

(但这里的一切)


任何建议都将不胜感激

好的,我已经看过代码了,下面是我的想法

在Phaser内。游戏中你有这个代码

/**
* @property {Phaser.GameObjectFactory} add - Reference to the Phaser.GameObjectFactory.
*/
this.add = null;
因为它最初设置为null,我猜VisualStudio将无法推断“add”将是什么类型,因为它只在运行时确定

如果add(…)被定义为Phaser.Game.prototype.add=function(){…},或者甚至在使用this.add=function(){…}的函数中,我想您会在intellisense中看到它(这通常是在Javascript中构建类的方式)。但是,我注意到您稍后在代码中动态地定义了它,如工厂中的代码所示:

this.add = new Phaser.GameObjectFactory(this);
VisualStudio不够聪明,不知道这是它应该用于intellisense的add(…)的定义


在第二个示例中,游戏作为参数传递,而VisualStudio不够聪明,无法计算出这将是什么类型。因为Javascript是弱类型的,所以参数可以是一个游戏,也可以是整数、布尔值或其他任何东西。

传递到Platfom的参数可以是任何东西,因为Javascript是弱类型的,所以intellisense无法推断它是什么。你能展示Phaser.Game的代码吗?但是intellisense能够在我展示的两个示例中推断出平台是什么,对吗?所以我只是想知道为什么它在其他地方不起作用。游戏可以在这里找到:。只需搜索“@class Phaser.Game”。