JS命名空间Netbeans变量未声明。

7

当我在JavaScript中定义命名空间时,Netbeans给出了“全局变量未声明”的错误提示,但我认为这不应该出现。这是为什么呢?
演示代码:

var MyNamespace = new function () {
    var MyClass = function () {};
    MyClass.SOME_CONSTANT = 9; // MyClass not defined
    this.MyClass = MyClass; // MyClass not defined
};

我检查了一下,这段代码在IE(文档模式IE 5)和Edge 13中可行。这段代码是类似于此答案中的模块模式语法。

编辑:首先声明一个变量可能没有用处,因为命名空间中的函数有时会更改局部变量而不是公共命名空间中的变量,我对吗?不过,我想知道为什么Netbeans会给我一个错误。

2个回答

11

您可以在顶部添加注释,告诉Netbeans忽略此错误。例如,在使用Angular时。

/* global angular */

将防止类似的错误发生

angular.module('Module', []);

那么,这是Netbeans的一个错误吗?我的意思是,在出现错误的前一行我已经声明了变量(类),所以它应该在范围内可用,对吧?(然后通过 MyNamespace.MyClass 后面调用) - SWdV

3

我正在使用NetBeans IDE 8.2 (Build 201705191307)

如果您想完全忽略这种类型的错误,我建议您执行以下操作:

Tools > Options > Editor > Hints > Uncheck "The global variable is not declared"

在此输入图片描述

这对我有用。


由于“parseFloat”不是全局函数,而是本地函数,因此未正确检测为全局函数,这可能被视为一个bug。如果要搜索特定的bug,会禁用所有全局警告吗?对我来说不是一个选项,但对于想要这样做的人可能是实用的,但请警告他们 :D - Mbotet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接