javascript - Jshint 与 Closure |动态属性

标签 javascript jslint google-closure

这是我开始发现静态代码分析很奇怪的地方。

Google Closure 给我这个错误

// using dot notation
JSC_INEXISTENT_PROPERTY:

当我使用点表示法访问动态创建的对象属性时(即没有显式创建属性)

当我使用括号表示法时,错误消失了,但现在 jshint.com 抛出错误:

// using bracket notation
['tag'] is better written in dot notation.

我知道这些警告/错误只是提示编写更好的代码...但它们相互矛盾。

这是有问题的行:

vDomTagAdd(bookmark_object.tag);

相关

Extern File Suggestion

最佳答案

这是两个不同的警告。 Closure 认为这个属性不存在,因为它找不到你创建它的点。我假设您可以通过某种方式告诉 Closure 这个属性是动态的并且您确定它存在。

JSHint 只是给你一个文体警告,除非你绝对必须使用括号,否则最好使用点符号,但它不会尝试猜测你的属性是否已定义。

关于javascript - Jshint 与 Closure |动态属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12271811/

相关文章:

javascript - 为什么闭包编译器用 goog.exportSymbol 重命名属性?

javascript - 在线谷歌闭包缩小器?

javascript - jQuery scrollTop() 方法不起作用

javascript - JS Lint - 严格违反 - 在构造函数对象中定义函数

javascript - $ ("html, body").animate({scrollTop :0}, 'slow' );在我的页面上不起作用

angularjs - 最好用点表示法写在函数对象构造函数之后

javascript - jslint-vim 配置

javascript - 在 VML 和 Internet Explorer 中禁用图形元素选择

javascript - 如何重置NoUiSlider?

javascript - 在 Firefox 上卸载 webapp