我收到了这个警告:
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/,因此我假设代码审查必须已经发生。
答案 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);
}
}