当空值传递给参数之一时比较函数失败

Compare function failing when null value passed to one of the parameters

我正在使用以下代码比较两个值:

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

}

现在我的问题是,如果传递空值,函数将失败并显示以下消息: 记录异常:无法调用 null [81 ms] 的方法 "toLocaleLowerCase" 无法调用 null 的方法 "toLocaleLowerCase"。

有什么方法可以解决这个问题,这样我也可以处理空值吗? 我还需要进行大约 25 次比较,所以我希望代码不会非常耗时。

谢谢

  1. 删除function
  2. 里面的var
  3. 使用ternary operator检查传递的参数是否有效
  4. 调用toLocaleLowerCase()前使用toString()

代码:

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);
}