当空值传递给参数之一时比较函数失败
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 次比较,所以我希望代码不会非常耗时。
谢谢
- 删除
function
里面的var
- 使用
ternary operator
检查传递的参数是否有效
- 调用
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);
}
我正在使用以下代码比较两个值:
function CompareValue($ValueTobePresent,$ExpectedValue)
{
var $ValueTobePresent=$ValueTobePresent.toLocaleLowerCase();
var $ExpectedValue = $ExpectedValue.toLocaleLowerCase();
_assertEqual($ValueTobePresent, $ExpectedValue);
}
现在我的问题是,如果传递空值,函数将失败并显示以下消息: 记录异常:无法调用 null [81 ms] 的方法 "toLocaleLowerCase" 无法调用 null 的方法 "toLocaleLowerCase"。
有什么方法可以解决这个问题,这样我也可以处理空值吗? 我还需要进行大约 25 次比较,所以我希望代码不会非常耗时。
谢谢
- 删除
function
里面的 - 使用
ternary operator
检查传递的参数是否有效 - 调用
toLocaleLowerCase()
前使用toString()
var
代码:
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);
}