JSLint:意外的赋值表达式

时间:2015-09-09 08:01:56

标签: javascript vue.js jslint

我收到了这个警告:

Unexpected assignment expression.
return task.completed = true; // Line 63, Pos 39

使用此代码时:

completeAll: function () {
    this.tasks = this.tasks.filter(function (task) {
        return task.completed = true;
    });
}

为什么呢?我怎么能写这个表达式来避免JSLint抛出警告?

P.S。

代码块来自Vue TodoMVC示例:http://todomvc.dev/examples/vue/,因此我假设代码审查必须已经发生。

1 个答案:

答案 0 :(得分:4)

它之所以这样做,是因为它警告您在{&1;}}而不是===的情况下使用===if (foo = bar) { // ... } ;不仅要分配,还要对分配的结果做一些事情。这是完全有效的JavaScript,但它经常是无意的。一个更好的例子是:

==

...您可能意味着===task.completed(检查它们是否相同)。

如何修复它取决于您尝试做什么。从方法的名称开始,我假设您(好吧,他们正在尝试设置filter,在这种情况下,坦率forEach是错误的使用函数;他们应该使用completeAll: function () { this.tasks.forEach(function (task) { task.completed = true; }); }

filter

但如果您(他们)真的想使用completeAll: function () { this.tasks = this.tasks.filter(function (task) { task.completed = true; return true; // Or return task.completed }); }

return task.completed == true;

如果您正在尝试进行比较(我怀疑),而不是作业,那么:

return !!task.completed;

return task.completed; // If you know it's boolean already

class Welcome extends CI_Controller {


public function index()
    {
     $test = "hello";
     $this->load->view('welcome_message',$test);
 }
}