Ben*_*rts 7 javascript jslint backbone.js
我有一个自包含的Backbone.View实现MainControllerView,可以处理自己(即,没有理由对它进行外部引用.).如果,在我的主要bootstrapper函数中,我会这样做:
$(function() {
new MainControllerView();
});
Run Code Online (Sandbox Code Playgroud)
JSLint/JSHint抱怨我使用"new for side effects".阅读此警告表示上述内容被视为有臭味的代码.替代方法是不使用new,只是将构造函数作为函数调用,或者将其赋值给变量.但是,MainControllerView()直接调用我的函数而不使用new主干代码中的引发错误,所以这显然不是一个选项.对我来说似乎完全错误,以下是更好的代码:
$(function() {
var instantGarbage = new MainControllerView();
});
Run Code Online (Sandbox Code Playgroud)
事实上,这会引发一个不同的JSLint警告"instantGarbage已定义但从未使用过".显然,如果我这样做,我就会感到危险,如果不这样做,我就会感到危险.那么,是否有一种不同的"正确"方式来处理这类事情?以某种方式创建即时垃圾变量是"更好的代码"替代方案吗?Backbone.js是否以非Crockford批准的方式利用"new"关键字?或者这只是"规则"的例外之一?
tko*_*one 10
new没有害处.一遍又一遍地重复.
如果使用正确,new效果很好.就像Backbone一样.
JSLint是一个非常自以为是的短信; 仅仅因为克罗克福德说某事不好或不应该使用,并不意味着这是一个普遍的事实.此外,他背后的推理更多的是它掩盖了更经典的外观背后的Javascript原型性质.
但是,如果使用JSHint之类的工具,则可以配置这些警告.
我更喜欢你的两个声明中的后者
$(function() {
var instantGarbage = new MainControllerView();
});
Run Code Online (Sandbox Code Playgroud)
您可以使用unused: falseJSHint选项来禁止此操作.
或者你可以nonew: false改为设置.
这些可以在一个.jshintrc或甚至每个文件中设置注释:
/* jshint unused: false */
Run Code Online (Sandbox Code Playgroud)
在文件的顶部.这将为文件关闭它.您甚至可以针对特定范围禁用它.
查看jshint文档
| 归档时间: |
|
| 查看次数: |
1170 次 |
| 最近记录: |