我有以下代码,并且无法使用'myGlobal'。我必须返回myGlobal或新对象,因为该对象已添加到其他文件中。

var myGlobal= (function (my) {
    'use strict';

    return my;
}(myGlobal|| {}));

在这种情况下,有没有办法满足jsLint?

最佳答案

当我碰到这个问题时,我想我通常会作弊。例如,在浏览器上下文中,所有全局变量实际上都存在于window对象上,因此您可以执行以下操作:

/*jslint sloppy:true, white:true, browser:true */
window.myGlobal = (function (my) {
    'use strict';

    return my;
}(window.myGlobal|| {}));

从逻辑上讲,这归结为同一件事,并使JSLint感到高兴。

快速编辑:或者,尽管这本质上是相同的技巧(听起来似乎是您已经在尝试使用myGlobal进行设置的技巧),但可以考虑将全局变量分组为定义为全局的命名空间,如下所示。 ..
/*jslint sloppy:true, white:true, browser:true */
/*global MyNamespace */
MyNamespace.myGlobal = (function (my) {
    'use strict';

    return my;
}(MyNamespace.myGlobal|| {}));

虽然那是类似的情况。如果您不能绝对确定您之前在某个地方包含了一个定义MyNamespace的包含项,那么您现在正试图检查MyNamespace是否存在。

因此,快速答案可以减少到上面的window技巧。

10-06 07:49