我在申请工作的代码测试中遇到问题。该测试正在使用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;