JavaScript - 当电话号码字符串等于九个字符时尝试返回 null



我在申请工作的代码测试中遇到问题。该测试正在使用Jasmine进行测试,我很难通过测试9。我已经使用 .replace 通过了前 3 个测试,以删除所有标点符号和空格,但现在我卡住了。在 JavaScript 方面,我非常绿色。

测试希望我在一串数字仅包含 9 个数字时返回 null。

这是我的代码。我做错了什么?

var PhoneNumber = function (string) {
  this.phone = string;
};
PhoneNumber.prototype.number = function () {
  return this.phone.replace(/[^d]/g,'');
  if (this.phone.length === 9) {
    return null;
  };
};
module.exports = PhoneNumber;

我做错了什么?

问题是,当你使用 return 关键字时,外行术语中的函数"结束"。所以当你执行行时

return this.phone.replace(/[^d]/g,'');

它将终止函数,因此不允许返回 null。该问题的最简单解决方案如下:

PhoneNumber.prototype.number = function () {
   if (this.phone.length === 9) {
      return null;
   }
   return this.phone.replace(/[^d]/g,'');
};
这样,如果需要,

您将返回 null,如果没有,您可以处理字符串。顺便说一下,您不需要 if 语句括号末尾的分号。

只需切换if语句的位置即可。

var PhoneNumber = function (string) {
    this.phone = string;
};
PhoneNumber.prototype.number = function () {
    if (this.phone.length === 9) {               // <----- Here
        return null;
    };
    return this.phone.replace(/[^d]/g,'');
};
module.exports = PhoneNumber;

最新更新