Сбой функции сравнения при передаче нулевого значения одному из параметров
Я использую приведенный ниже код для сравнения двух значений:
function CompareValue($ValueTobePresent,$ExpectedValue)
{
var $ValueTobePresent=$ValueTobePresent.toLocaleLowerCase();
var $ExpectedValue = $ExpectedValue.toLocaleLowerCase();
_assertEqual($ValueTobePresent, $ExpectedValue);
}
Теперь моя проблема заключается в том, что если передано нулевое значение, функция завершается с сообщением ниже: Исключение ведения журнала: Невозможно вызвать метод "toLocaleLowerCase" с нулевым значением [81 мс] Невозможно вызвать метод "toLocaleLowerCase" с нулевым значением.
Есть ли способ, которым я могу решить это, чтобы я мог обрабатывать также нулевые значения? Также у меня есть около 25 сравнений, поэтому я хочу, чтобы код не занимал много времени.
Спасибо
2 ответа
Решение
- Удалить
var
внутриfunction
- использование
ternary operator
проверить правильность переданных аргументов - использование
toString()
перед звонкомtoLocaleLowerCase()
Код:
function CompareValue($ValueTobePresent, $ExpectedValue) {
$ValueTobePresent = $ValueTobePresent ? $ValueTobePresent.toString().toLocaleLowerCase() : '';
$ExpectedValue = $ExpectedValue ? $ExpectedValue.toString().toLocaleLowerCase() : '';
_assertEqual($ValueTobePresent, $ExpectedValue);
}
Вы можете заменить нулевые значения пустыми строками, если это работает для вас
function CompareValue($ValueTobePresent,$ExpectedValue)
{
var $ValueTobePresent = ($ValueTobePresent || '').toLocaleLowerCase();
var $ExpectedValue = ($ExpectedValue || '').toLocaleLowerCase();
_assertEqual($ValueTobePresent, $ExpectedValue);
}