【问题标题】:Warning JSHint with backbone : Expected an assignment or function call and instead saw an expression带有主干的 JSHint 警告:预期分配或函数调用,而是看到一个表达式
【发布时间】:2014-06-12 02:29:35
【问题描述】:

在我所有的 JS 文件中,我都有一个 JSHint 警告:期望一个赋值或函数调用,而是看到一个表达式。

一个例子:

/*global App, Backbone*/

App.Routers = App.Routers || {};

(function () {
    'use strict';

    App.Routers.ApplicationRouter = Backbone.Router.extend({

        routes: {
            '': 'home',
            '!/case-projet/:projet(/)': 'projetService',
            '!/case-projet/:projet/Galerie(/)': 'galerieService',
            '!/case-projet(/)': 'homeEvents',
        },
        projetService: function (e) {
            this.loadView(e), App.activeProjectView.enterFromRouter();
        },
        galerieService: function (e) {
            this.loadView(e), App.activeProjectView.enterGalleryFromRouter();
        },
        homeEvents: function (e) {
            this.loadView(e),
            $('html,body').animate({scrollTop: $('.line[data-id="events"]').offset().top}, 2000, 'easeInOutQuint');
        },
        home: function () {
            new App.Views.Homeview();
        },
        loadView: function (e) {
            switch (e) {
            case 'Homeview':
                App.loadView(new App.Views.Homeview());
                break;
            case 'Incentive':
                App.loadView(new App.Views.Incentive());
                break;
            case 'Corporate':
                App.loadView(new App.Views.Corporate());
                break;
            case 'Convention':
                App.loadView(new App.Views.Convention());
                break;
            case 'Studio':
                App.loadView(new App.Views.Studio());
                break;
            default:
                App.loadView(null);
            }
        }

    });

})();

http://www.jshint.com/ 我有:

四个警告 17 需要赋值或函数调用,但看到的是表达式。 20 需要赋值或函数调用,但看到的是表达式。 24 需要赋值或函数调用,但看到的是表达式。 27 不要使用“新”来表示副作用

谢谢

【问题讨论】:

  • 使用分号,你在滥用逗号操作符。
  • 分号和逗号有什么区别? (技术)
  • @Dossp:在哪里你得到错误了吗?这是包含在问题中的相当基本的内容。
  • @T.J.Crowder:这本身不是错误,只是 JSHint 警告。前三个警告位于projetServicegalerieServicehomeEvents

标签: javascript backbone.js jshint


【解决方案1】:

你没有说 在哪里你得到这些错误,但是例如在这里你没有充分的理由使用逗号运算符:

this.loadView(e), App.activeProjectView.enterFromRouter();

只要做:

this.loadView(e);
App.activeProjectView.enterFromRouter();

Re new 有副作用,它在抱怨这个:

new App.Views.Homeview();

在那里,new 被用于构造一个对象,但是您没有将对象引用(new 表达式的结果)保存在任何地方。所以它只用于副作用(其他函数中发生的事情),这通常不是一个好主意。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2017-08-29
    • 2019-10-29
    • 2019-09-09
    • 1970-01-01
    • 2016-09-16
    • 2021-03-14
    相关资源
    最近更新 更多