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

And*_*man 1 javascript node.js express

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

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

var errors = validator.getErrors();

// Function definition
Validator.prototype.getErrors = function () {
    return this._errors;
}
Run Code Online (Sandbox Code Playgroud)

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

validator.clearErrors();

// Function definition
Validator.prototype.clearErrors = function () {
  this._errors = [];
}
Run Code Online (Sandbox Code Playgroud)

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

Den*_*ret 5

为什么不简单呢?

Validator.prototype.getErrors = function () {
    var r = this._errors;
    this._errors = []; 
    return r;
}
Run Code Online (Sandbox Code Playgroud)

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