如何返回变量并同时重置/删除它

时间:2013-10-16 08:17:41

标签: javascript node.js express

我有一个验证器库,它正在清理和验证字符串。 验证器函数正在将消息推送到数组“errors”,以查找它们找到的每个无效输入。

当对所有输入的验证完成时,我会收集如下变量中的错误:

var errors = validator.getErrors();

// Function definition
Validator.prototype.getErrors = function () {
    return this._errors;
}

var“errors”现在是一个包含0到几个字符串元素的数组。在此之后,我正在调用一个函数来清空验证器中的错误。

validator.clearErrors();

// Function definition
Validator.prototype.clearErrors = function () {
  this._errors = [];
}

问题:我可以以某种方式重新编写getErrors()函数,这样它也是空的内部_errors变量吗?...然后我可以完全删除clearErrors函数。

2 个答案:

答案 0 :(得分:5)

为什么不简单呢?

Validator.prototype.getErrors = function () {
    var r = this._errors;
    this._errors = []; 
    return r;
}

但是传统上,名为getXXX的函数不应该有任何副作用。清除getErrors函数中的源代码有点令人惊讶。如果你只想保留一个函数,你可以称它为popErrors,例如。

答案 1 :(得分:1)

为什么不克隆错误数组,然后在返回克隆的数组值

之前重置错误

How do you clone an Array of Objects in Javascript?

Validator.prototype.getErrors = function () {
    new_array = this._errors.slice(0);
    this._errors = [];
    return new_array;
}