Сбой функции сравнения при передаче нулевого значения одному из параметров

Я использую приведенный ниже код для сравнения двух значений:

function CompareValue($ValueTobePresent,$ExpectedValue)
{
    var $ValueTobePresent=$ValueTobePresent.toLocaleLowerCase();
    var $ExpectedValue = $ExpectedValue.toLocaleLowerCase();
    _assertEqual($ValueTobePresent, $ExpectedValue);

}

Теперь моя проблема заключается в том, что если передано нулевое значение, функция завершается с сообщением ниже: Исключение ведения журнала: Невозможно вызвать метод "toLocaleLowerCase" с нулевым значением [81 мс] Невозможно вызвать метод "toLocaleLowerCase" с нулевым значением.

Есть ли способ, которым я могу решить это, чтобы я мог обрабатывать также нулевые значения? Также у меня есть около 25 сравнений, поэтому я хочу, чтобы код не занимал много времени.

Спасибо

2 ответа

Решение
  1. Удалить var внутри function
  2. использование ternary operator проверить правильность переданных аргументов
  3. использование 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);
}
Другие вопросы по тегам